Java Web.xml-url模式映射两次

Java Web.xml-url模式映射两次,java,servlets,web.xml,servlet-filters,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&

我们的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>

testServlet
org.springframework.web.servlet.DispatcherServlet
1.
testServlet
*.htm
另一个servlet
com.test.anotherServlet
另一个servlet
*.htm

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

第二个映射是针对过滤器,而不是servlet

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

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


还有更多信息。

Carl,谢谢您的快速回复。。我通过了那个链接。。因此,如果存在多个筛选器映射。。firstFilter*.htm secondFilter*.htm然后,首先调用firstFilter的doFilter()方法,如果调用chain.doFilter(),则调用secondFilter的doFilter,最后调用firstServlet的服务方法。。理解正确吗?调用
过滤器
Servlet是个糟糕的主意。而是将其称为
com.test.AnotherFilter
左右。