8

在我看到的其中一个代码中,没有<servlet-mapping>标签,只有它声明如下

<servlet>
    <servlet-name>startServlet</servlet-name>
    <servlet-class>com.login.StartupServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

这可以在没有<servlet-mapping>和继续工作的情况下工作<load-on-startup>1</load-on-startup>吗?

此 servlet 将在服务器启动时加载以连接到数据库并在缓存上执行少量操作。

PS:这是在 Servlet 2.0+ 版本上,没有注释。

谢谢普尼斯

4

2 回答 2

8

您发布的代码定义了您可能称之为“初始化器 Servlet”的东西。它不是从外部世界直接访问(使用 URL),而是由 Servlet 容器启动。

它是有效的,但它不能被客户端访问。它通常用于初始化目的。您可以在不<servlet-mapping>使用 Servlets 3.0 注释的情况下访问 servlet。

注意<load-on-startup>不包含真/假值(0/1),但它定义了一个整数,它是启动顺序。较高的数字意味着 Servlet 将在较小的数字之后加载。

于 2012-09-26T13:28:39.847 回答
2

此模式通常用于 Java EE Web 应用程序的初始化。例如,它是@SingletonEJB 3.1 中引入的渴望注释的流行解决方法。

于 2012-09-26T13:28:56.087 回答