# 如何在`web.xml`文件中使用`load-on-startup`标签

> 原文： [https://beginnersbook.com/2017/07/load-on-startup-tag-in-web-xml-file-with-example/](https://beginnersbook.com/2017/07/load-on-startup-tag-in-web-xml-file-with-example/)

默认情况下，在 servlet 容器收到特定 servlet 的请求之前，不会加载 Servlet。这可能会导致第一次访问 servlet 的延迟。为避免访问时间延迟，您可以使用`web.xml`文件中的标签`<load-on-startup>`，允许您在服务器启动时强制 servlet 容器加载（实例化并使其`init()`调用）servlet。

## 如何使用`<load-on-startup>`？

这是一个示例`web.xml`文件：

```java
<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 加载的顺序？

```java
<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`在启动时不会加载，因为它具有负加载启动值。