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?
答案 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>