1

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

4 回答 4

1

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

于 2013-06-25T23:49:20.773 回答
0

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

<filter-mapping>
  <filter-name>Image Filter</filter-name>
  <servlet-name>ImageServlet</servlet-name>
</filter-mapping>
于 2013-06-26T00:10:36.817 回答
0

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

您可以将多个 url 模式绑定到同一个 servlet 名称。

于 2013-06-25T23:47:17.697 回答
0

我同意这看起来很难看,但这是保持 servlet 配置DRY的尝试,因为servlet-name它可以用于过滤器映射和 servlet 映射。

在 servlet 规范 3.0 中,您可以对 servlet 本身进行注释,这样更整洁。

于 2013-06-25T23:49:09.420 回答