为什么在web.xml中有一个额外的servlet配置级别?

时间:2013-06-25 23:43:02

标签: java xml servlets

servlet配置如下所示 -

<servlet>
<servlet-name>smart</servlet-name>
<servlet-class>SuperSmart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>smart</servlet-name>
<url-pattern>/dumb</url-pattern>
</servlet-mapping>

它说所有这些别名都是出于安全考虑。我明白了。但是为什么我们必须首先将它映射到servlet-name然后再映射到servlet-class?为什么服务器无法找到url模式并直接将其映射到servlet-class?

4 个答案:

答案 0 :(得分:1)

这样做的目的是servlet可以被多个映射引用,因此您可以将一个servlet映射到多个 url(或模式),而不只是一个。

答案 1 :(得分:0)

名称有点像和“ID”告诉容器哪个<servlet>部分与哪个<servlet-mapping>部分相关(以及在容器特定XML中将其与XML配置的其他部分联系起来)文件)

您可以将多个网址格式绑定到同一个servlet名称。

答案 2 :(得分:0)

我同意这看起来很难看,但这是尝试保留servlet config DRY,因为servlet-name可以在filter-mappings以及servlet-mappings中使用。

在servlet规范3.0中,您可以注释整个servlet本身。

答案 3 :(得分:0)

它的设计允许其他组件(如过滤器)可以访问它。可以使用<servlet-name>样式将过滤器与Servlet相关联:

<filter-mapping>
  <filter-name>Image Filter</filter-name>
  <servlet-name>ImageServlet</servlet-name>
</filter-mapping>