JSP原理

JSP原理

什么是JSP

Java Server Page JAVA服务器端页面,也和Servlet一样,用于动态Web技术
最大的特点:

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

JSP原理

思路:JSP到底是怎么执行的?

  • Tomcat中有一个work目录;
  • IDEA使用Tomcat会在IDEA的tomcat中生产一个
    JSP原理
    而想要在IDEA中找到其工作目录,需先在配置文件中设置路径:
    JSP原理
    在IDEA工作目录中找到idea.properties文件,使用编辑器打开该文件,修改下列语句
    JSP原理
    该语句默认是被注释掉的,这里我取消注释后,将其路径修改我的自己设置的路径(注:该路径在系统中必需已经存在,否则,idea启动会报错)。
    而后重启IDEA,新建一个web项目,通过tomcat启动该web项目
    启动之后自动弹出浏览器界面
    JSP原理
    此后我们查找IDEA下tomcat创建的临时工作目录
    C:\Users\30869.IntelliJIdea\system\tomcat\d0ce923c-c08e-43a7-876c-34572a3e37e1\work\Catalina\localhost\session_cookie_war\org\apache\jsp
    • 这个目录的前部分C:\Users\30869.IntelliJIdea\system,与上面的配置文件设置的文件路径一致
    • 而session_cookie_war为我的项目名称
      在该路径下,我们可以看到,产生了两个临时文件
      JSP原理
      通过观察,理解概念:浏览器向服务器发送请求,不管访问上面资源,其实都是在访问Servlet!
      JSP最终也会转换成一个java类
      打开index_jsp.java文件,观察源码
      JSP原理
      可以看到index_jsp继承了org.apache.jasper.runtime.HttpJspBase
      观察源码
      JSP原理
      JSP原理
      发现实现了Servlet接口
      JSP的本质就是一个Servlet
public interface Servlet {
	//初始化
    void init(ServletConfig var1) throws ServletException;
	//服务
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
	//销毁
    void destroy();
}

1、判断请求
2、内置了一些对象

	final javax.servlet.jsp.PageContext pageContext;	//页面上下文
    javax.servlet.http.HttpSession session = null;			//session
    final javax.servlet.ServletContext application;			//applicationContxt
    final javax.servlet.ServletConfig config;					//config
    javax.servlet.jsp.JspWriter out = null;						//out
    final java.lang.Object page = this;							//当前页
    final javax.servlet.http.HttpServletRequest request	//请求
    final javax.servlet.http.HttpServletResponse response	//响应

3、输出页面前增加的代码

	  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;

以上这些对象我们可以在JSP页面直接使用
4、然后输出

	  out.write("<html>\n");
      out.write("<body>\n");
      out.write("<h2>Hello World!</h2>\n");
      out.write("</body>\

在JSP页面中;
只要是JAVA代码就会原封不动的输出;
如果HTML代码,就会被转换成:

      out.write("<html>\n");

这样的格式渲染到前端。

流程图

JSP原理
我们可以通过修改JSP文件中的代码,通过查看临时文件,更加深入理解该过程,学无止尽,冲冲冲

上一篇:李宏毅深度学习笔记P1、P2


下一篇:A Survey on Multi-Agent Reinforcement Learning Methods for Vehicular Networks