理解JSP生命周期

时间:2018-11-15 12:06:05  来源:igfitidea点击:

JSP介绍中我们说过web容器或Servlet容器负责将JSP页面转换为Servlet。
所以JSP不会将内容直接输出到浏览器。而是由服务器端处理端将JSP文件转换为JSP Page类 Servlet。然后,Servlet将处理所有由JSP发出的请求。

JSP的生命周期如下图所示:

JSP生命周期可以分为四个阶段:转换初始化运行结束

转换

在转换阶段,JSP引擎检查JSP 语法,如果语法正确,则将JSP页面文件转换为它的页面实现类源文件。这个类实际上是一个标准的Java servlet。之后,JSP引擎将源文件编译成一个可以使用的类文件。

当容器接收到请求时,它会检查自上次转换后JSP页面文件是否被更改。如果没有进行任何更改,它只加载servlet;否则将重新进行语法检查、转换和编译的过程。

初始化

在转换阶段之后,JSP引擎加载类文件并创建servlet的实例来处理初始化请求。JSP引擎将调用jspInit()方法来初始化servlet。jspInit()方法是在转换阶段生成的,它通常用于初始化应用程序级的参数和资源。
我们可以使用声明来覆盖此方法。

<%!
   public void jspInit(){
      // 你的初始化代码
   }
%>

运行

在初始化阶段之后,web容器调用方法_jspService()来处理请求并向客户端返回响应。

处理的每个请求都是一个单独的线程。我们写的所有的Scriptlet(小脚本 在helloworld我们有提到)和表达式都在这个方法中结束。声明(比如jspInit())和后面我们学到的JSP指令,因为他们应用于整个页面,所以它们在此方法之外结束。

结束

在最后阶段,web容器调用方法jspDestroy()。此方法用于清理内存和资源。与jspInit()方法一样,您也可以覆盖jspdestroy()方法来完成所有的清理工作,比如释放在初始化阶段加载的资源。

<%!
   public void jspDestroy(){
      // 用来清理资源的代码
   }
%>