1. JSP

1.1 什么是JSP

Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术!


1.2 JSP最大的特点

  • 写JSP就像在写HTML
    区别:
  • HTML只给用户提供静态的数据
  • JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

1.3 JSP原理

思路:JSP到底怎么执行的!

  • 服务器内部工作
    • tomcat中有一个work目录;
    • IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录,这个目录是动态生成的,访问服务器就会生成。

在这里插入图片描述

我电脑的地址

C:\Users\Administrator\.IntelliJIdea2017.2
\system\tomcat\Unnamed_javawev-sesseion-cookie\work
\Catalina\localhost\ROOT\org\apache\jsp

发现页面转变成了Java程序!
在这里插入图片描述
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转换成为一个Java类!
JSP 本质上就是一个Servlet(继承了HttpServlet这个类)

//初始化
  public void _jspInit() {
      
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(HttpServletRequest request,HttpServletResponse response)

在这里插入图片描述


1.3.1 示例:测试work目录是动态生成的

1. 新建一个hello.jsp
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>hello jsp!</h1>
</body>
</html>
  1. 启动服务器
    在这里插入图片描述

  2. 当在启动服务器的过程中,原先的work目录会被删掉,等服务器启动完毕后,会创建一个新的work目录。
    在这里插入图片描述

  3. 访问hello.jsp
    在这里插入图片描述


  1. 查看现在服务器新生成的work目录
    在这里插入图片描述
    hello_jsp.java 代码截图(工作原理)

    javax.servlet.jsp.JspWriter out;对象往网页里面写入html代码。
    在这里插入图片描述

1.3.2 示例:jsp里面写java代码,<% java代码 %>

  1. 修改hello.jsp里面的代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String name = "周天天";
%>
<h1>hello <%=name%>!</h1>
</body>
</html>

  1. 启动服务器
    在这里插入图片描述

  2. 访问hello.jsp
    在这里插入图片描述

  3. 查看现在服务器新生成的work目录
    在这里插入图片描述
    hello_jsp.java 代码截图(工作原理)

    javax.servlet.jsp.JspWriter out;对象往网页里面写入html代码。
    在这里插入图片描述
    我们发现:在JSP页面中;只要是 JAVA代码就会原封不动的输出;如果是html的格式就会转会为类似:out.write(“\r\n”);这样的格式输出到前端,所以说前端是被渲染出来的,而不是跟我们在学html直接写出来。


1.4 JSP 做的事情

  1. 判断请求
  2. 内置了一些对象
final javax.servlet.jsp.PageContext pageContext;  //页面上下文
javax.servlet.http.HttpSession session = null;    //session
final javax.servlet.ServletContext application;   //applicationContext
final javax.servlet.ServletConfig config;         //config
javax.servlet.jsp.JspWriter out = null;           //out
final java.lang.Object page = this;               //page:当前
HttpServletRequest request;                        //请求
HttpServletResponse response;                      //响应
  1. 输出页面前增加的代码
response.setContentType("text/html");       //设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this, request, response,
       null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐