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名称,然后再映射到servlet类呢?为什么服务器不能找到url模式并直接将其映射到servlet类?
这样做的目的是servlet可以被多个映射引用,因此您可以将一个servlet映射到多个url(或模式),而不仅仅是一个。
名称有点像和"ID",它告诉容器哪个<servlet>
部分与哪个<servlet-mapping>
部分(以及将其与特定于容器的XML文件中的XML配置的其他部分联系在一起)
您可以将多个url模式绑定到同一个servlet名称。
我同意这看起来很难看,但这是一种保持servlet配置DRY的尝试,因为servlet-name
可以用于过滤器映射和servlet映射。
在servlet规范3.0中,您可以对servlet本身进行注释,这样更简洁。
它是这样设计的,以允许其他组件(如过滤器)可以访问它。过滤器可以通过使用<servlet-name>
样式与Servlet关联:
<filter-mapping>
<filter-name>Image Filter</filter-name>
<servlet-name>ImageServlet</servlet-name>
</filter-mapping>