【摘要】:在ch05 项目中新建一个JSP 文件life.jsp 用于测试JSP 的生命周期。图4.9JSP 生命周期测试相应的控制台输出:第2 次请求life.jsp 页面,浏览器运行效果如图4.10 所示。图4.11JSP 生命周期测试相应的控制台输出:更改JSP 文件内容之后,第4 次请求life.jsp。图4.12JSP 生命周期测试相应的控制台输出:从测试结果不难看出,初始化方法只会在第一次请求的时候执行,若再次请求将不会执行初始化方法,而直接处理用户的请求。
JSP 的生命周期与Servlet 的生命周期很相似,主要分为以下几个阶段:
(1)装载和实例化
Web 容器为JSP 页面查找已有的实现类,如果没找到则创建新的JSP 页面的实现类,然后把这个类载入JVM。在实现类装载完成后,JVM 将创建这个类的一个实例。这一步会在装载后立刻执行,或者在第一次请求时执行。
(2)初始化(jspInit())
初始化JSP 页面对象。如果希望在初始化期间执行某些代码,那么就可以向页面中增加一个初始化方法,在初始化的时候就会调用该方法。
(3)请求处理(jspService())
由页面对象响应客户端的请求。需要注意的是,单个对象实例将处理所有的请求。在执行完处理后,服务器将一个响应返回给客户端。这个响应完全是由HTML 标签和其他数据构成的,并不会把任何Java 源码返回给客户端。jspService()方法由Web 容器实现,开发人员不应该实现这个方法。
(4)生命周期终止(jspDestroy())
服务器不再把客户端的请求发给JSP。在所有的请求处理完成后,会释放掉这个类的所有实例。一般这种情况会发生在服务器关闭的时候,但是也有其他的可能性,比如服务器需要保存资源、检测到有JSP 文件更新或者由于其他某些原因需要终止实例等情况。如果想让代码执行清除工作,那么可以实现jspDestroy()方法,并且在这个类实例释放之前调用该方法。
例4.2:JSP 生命周期测试示例。
在ch05 项目中新建一个JSP 文件life.jsp 用于测试JSP 的生命周期。life.jsp 内容如下:


以下共4 次对life.jsp 文件进行访问。
(1)第1 次请求life.jsp 页面,浏览器运行效果如图4.9 所示。

图4.9 JSP 生命周期测试(1)
相应的控制台(Console)输出:
(www.chuimin.cn)
(2)第2 次请求life.jsp 页面,浏览器运行效果如图4.10 所示。

图4.10 JSP 生命周期测试(2)
相应的控制台(Console)输出:

(3)第3 次请求life.jsp 页面,浏览器运行效果如图4.11 所示。

图4.11 JSP 生命周期测试(3)
相应的控制台(Console)输出:

(4)更改JSP 文件内容之后,第4 次请求life.jsp。
在这次请求之前,改变了jsp 文件的内容,但是并不重启服务器。运行效果如图4.12所示。

图4.12 JSP 生命周期测试(4)
相应的控制台(Console)输出:

从测试结果不难看出,初始化方法只会在第一次请求的时候执行,若再次请求将不会执行初始化方法,而直接处理用户的请求。当JSP 文件发生改变后,再次请求该JSP 文件,Web 容器先调用jspDestroy()方法销毁JSP 类的所有实例,然后重新开始新的生命周期。
相关推荐