0

我们的 web.xml 包含以下摘录..

<servlet>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>anotherServlet</filter-name>
    <filter-class>com.test.anotherServlet</filter-class>    
</filter>
<filter-mapping>
    <filter-name>anotherServlet</filter-name>
    <url-pattern>*.htm</url-pattern>
</filter-mapping>

我需要了解当遇到 *.htm(比如 hello.htm)url 时容器如何映射......当这样的请求发生时会发生什么。

4

1 回答 1

1

第二个映射用于过滤器,而不是 servlet。

当一个请求进入 servlet 容器时,它首先通过一个过滤器链,然后到达 servlet,然后以相反的顺序通过过滤器返回。

过滤器的 API 与 servlet 稍有不同:有一个方法称为doFilter()获取 aServletRequest和 a ServletResponsechain.doFilter它通过相同的参数调用链的其余部分;在过滤器链的末端,这些参数被传递给 servlet。因此过滤器能够改变甚至替代进来的请求对象和出来的响应对象。

这里有更多信息。

于 2010-07-12T09:58:45.557 回答