【问题标题】:Can we invoke a servlet without <servlet-mapping> in web.xml entry我们可以在 web.xml 条目中调用没有 <servlet-mapping> 的 servlet
【发布时间】:2012-09-18 03:25:13
【问题描述】:

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

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

这可以在没有&lt;servlet-mapping&gt; 的情况下工作并在&lt;load-on-startup&gt;1&lt;/load-on-startup&gt; 上工作吗??

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

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

谢谢 普尼斯

【问题讨论】:

    标签: jakarta-ee web-applications servlets


    【解决方案1】:

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

    它是有效的,但它不能被客户端访问。它通常用于初始化目的。您可以使用 Servlets 3.0 注释访问没有 &lt;servlet-mapping&gt; 的 servlet。

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

    【讨论】:

    • 其实其中一个安全工具正在抛出错误,说... web.xml 中定义的 Servlet 如果没有相应的 servlet 映射就无法访问。
    • 嗯,它是真的 :-) 但是,我认为它不应该显示错误 - 在我看来,警告会更合适。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2012-08-22
      • 1970-01-01
      • 2014-05-27
      • 2013-04-08
      • 2011-03-16
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多