我们可以在web.xml条目</servlet-mapping>中调用没有<servlet-mapping>的servlet

时间:2012-09-26 13:25:30

标签: java-ee web-applications servlets

在我看到的其中一个代码中,没有<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

2 个答案:

答案 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注释的一种流行的解决方法。