在我看到的其中一个代码中,没有<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将在服务器启动时加载以连接到DB并在缓存上执行一些操作。
PS:这是在Servlet 2.0+版本上,没有注释。
感谢 Punith
答案 0 :(得分:7)
您发布的代码定义了一些您可能称之为“初始化Servlet”的代码。它不是从外部世界直接访问的(使用URL),但它将由Servlet容器启动。
它是有效的,但客户端无法访问它。它通常用于初始化目的。您可以使用Servlets 3.0注释来访问没有<servlet-mapping>
的servlet。
请注意<load-on-startup>
不包含true / false值(0/1),但它定义了一个整数,它是一个启动顺序。数字越大意味着在数字越少的情况下将加载。
答案 1 :(得分:2)
此模式通常用于初始化Java EE Web应用程序。例如,它是EJB 3.1中引入的longned @Singleton
注释的一种流行的解决方法。