Servlet生命周期

来源:互联网 发布:mac口红neon orange 编辑:程序博客网 时间:2024/06/06 03:22

1、Servlet 通过调用 init () 方法进行初始化。

2、Servlet 调用 service() 方法来处理客户端的请求。

3、Servlet 通过调用destroy() 方法终止(结束)。

4、最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

服务器会在启动时(如果load-on-startup为1)或者第一次请求Servlet时(如果load-on-startup为0)初始化一个Servlet对象

无论请求多少次Servlet,最多只有一个Servlet实例,多个客户端并发的请求Servlet时,服务器会启动多个线程分别执行该Servlet的Service 方法

init方法和destroy方法只会被执行一次,而Service方法在每次客户端请求Servlet时都会被执行


从java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct与@PreDestroy,这两个注解被用来修饰一个非静态的void方法,而且这个方法不能有抛出异常的声明

@PostConstructpublic void someMethod(){      ... //此函数会在Servlet的构造函数执行之后,init 方法执行之前触发} @PreDestroypublic void someMethod(){      ... //此函数会在destroy方法执行之后,服务器卸载Servlet之前触发}
 

需要注意的事,注解多多少少会影响服务器的加载速度,如果应用程序中没有使用任何注解,可以再web.xml中设置<web-app>的metadata-complete属性为true来关闭服务器启动时例行的注解检查

<web-app xmlns ="http://java.sun.com/xml/ns/javaee" version = "2.5"      metadata-complete = "true">      ... </web-app>


8 0
原创粉丝点击