Servlet web.xml使用load-on-startup标签,默认情况下,在 servlet 容器收到特定 servlet 的请求之前,不会加载 Servlet。这可能会导致第一次访问 servlet 的延迟。为避免访问时间延迟,您可以使用web.xml
文件中的标签<load-on-startup>
,允许您在服务器启动时强制 servlet 容器加载(实例化并使其init()
调用)servlet。
如何使用<load-on-startup>
?
这是一个示例web.xml
文件:
<web-app>
…
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
…
</web-app>
如果我没有指定<load-on-startup>
,那么在收到对DemoServlet
servlet 类的请求之前,Web 容器就不会加载 servlet。由于我已经指定了值>= 0
,因此将在启动时加载此 servlet(DemoServlet
类)。
>= 0
的值表示在部署 web-app 时或服务器启动时加载 servlet。
如何使用<load-on-startup>
标签指定 servlet 加载的顺序?
<web-app>
…
<servlet>
<servlet-name>MyServlet1</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet1</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>MyServlet2</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet2</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>MyServlet3</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet3</servlet-class>
<load-on-startup>-2</load-on-startup>
</servlet>
…
</web-app>
在这个例子中,我们在web.xml
文件中指定了三个 Servlet,因为 servlet 类DemoServlet1
和DemoServlet2
具有>= 0
的加载启动值,它们都将在服务器启动时立即加载。但是,在DemoServlet1
类之前加载 servlet 类DemoServlet2
,因为它具有较低的启动加载值。
Servlet 类DemoServlet3
在启动时不会加载,因为它具有负加载启动值。