Web.xml - url模式映射两次

时间:2010-07-12 09:54:33

标签: java servlets web.xml servlet-filters

我们的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时容器是如何映射的......当这样的请求发生时会发生什么。

1 个答案:

答案 0 :(得分:1)

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

当请求进入servlet容器时,它首先通过任何过滤器链,然后传递给servlet,然后以相反的顺序通过过滤器返回。

过滤器与servlet的API略有不同:有一个名为doFilter()的方法可以获得ServletRequestServletResponse。它通过chain.doFilter使用相同的参数调用链的其余部分;在过滤器链的末尾,这些参数被传递给servlet。因此,过滤器可以更改甚至替换进入的请求对象,以及响应对象的出现。

还有更多信息here