理解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(){ // 用来清理资源的代码 } %>