2.7.4 load-on-startup Servlet
2.7.4 load-on-startup Servlet
上一节中已经介绍过,创建Servlet
实例有两个时机:用户请求之时或应用启动之时。应用启动时就创建Servlet
,通常是用于某些后台服务的Servlet
,或者需要拦截很多请求的Servlet
;这种Servlet
通常作为应用的基础Servlet
使用,提供重要的后台服务。
配置load-on-startup
的Servlet
有两种方式。
- 在
web.xml
文件中通过<servlet>
元素的<load-on-startup>
子元素进行配置 - 通过
@WebServlet
注解的loadOnStartup
属性指定。
<load-on-startup>
元素或loadOnStartup
属性都只接收一个整型值,这个整型值越小,Servlet
就越优先实例化。
使用注解配置load-on-startup的Servlet
TimerServlet.java
下面是一个简单的Servlet
,该Servlet
不响应用户请求,它仅仅执行计时器功能,每隔一段时间会在控制台打印出当前时间。
1 | package lee; |
这个Servlet
没有提供service()
方法,这表明它不能响应用户请求,所以无须为它配置URL
映射由于它不能接收用户请求,所以只能在应用启动时实例化。
以上程序中的注解:
1 |
在web.xml中配置load-on-startup的Servlet
即可将该Servlet
配置了load-on-startup Servlet
.除此之外,还可以在web.xml
文件中增加如下配置片段。
1 | <servlet> |
以上配置片段中粗体字代码指定Web
应用启动时,web
容器将会实例化该Servlet
,且该Servlet
不能响应用户请求,将一直作为后台服务执行:每隔1秒钟输出一次系统时间。