JSP生命周期
理解JSP底层的关键在于理解JSP所遵循的生命周期。
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件翻译成servlet。
JSP的生命周期主要包括:编译、初始化、执行和清理,请看下图:
编译的过程主要包括:
如果你希望执行特殊的初始化任务,覆盖 jspInit() 方法就可以,像下面这样:
当JSP页面初始化完成后,容器会调用 _jspService() 方法。_jspService() 方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,像下面这样:
JSP销毁阶段会调用 jspDestroy() 方法,等价于 Servlet 中的 destroy() 方法。
如果你希望在最后执行特殊的清理工作,如关闭数据库连接、关闭打开的文件等,覆盖 jspDestroy() 方法即可,像下面这样:
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件翻译成servlet。
JSP的生命周期主要包括:编译、初始化、执行和清理,请看下图:
JSP编译
当浏览器请求JSP页面时,JSP引擎首先会检查是否需要编译该文件。如果该文件没有被编译过,或者上次编译后被更改过,则重新编译。编译的过程主要包括:
- 解析JSP文件;
- 将JSP文件转为servlet;
- 编译servlet。
JSP初始化
当容器载入JSP文件后,首先会调用 jspInit() 方法进行初始化工作。如果你希望执行特殊的初始化任务,覆盖 jspInit() 方法就可以,像下面这样:
public void jspInit(){ // 初始化代码 }一般来讲JSP只进行一次初始化,servlet也是如此。你可以在 jspInit() 方法中做一些铺垫性的工作,例如打开数据库、打开文件或创建查询表。
JSP执行
这是最重要的一个阶段,JSP从这里开始处理用户请求,直到被销毁。当JSP页面初始化完成后,容器会调用 _jspService() 方法。_jspService() 方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,像下面这样:
void _jspService( HttpServletRequest request, HttpServletResponse response ){ // 处理用户请求的代码 }每次请求,_jspService() 方法都会被调用一次并生成响应的内容(HTML代码)。
JSP清理
JSP的销毁阶段描述了当一个JSP页面从容器中被移除时所发生的一切。JSP销毁阶段会调用 jspDestroy() 方法,等价于 Servlet 中的 destroy() 方法。
如果你希望在最后执行特殊的清理工作,如关闭数据库连接、关闭打开的文件等,覆盖 jspDestroy() 方法即可,像下面这样:
public void jspDestroy(){ // 执行清理工作的代码 }