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秒钟输出一次系统时间。