我们的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时容器是如何映射的......当这样的请求发生时会发生什么。
答案 0 :(得分:1)
第二个映射用于过滤器,而不是servlet。
当请求进入servlet容器时,它首先通过任何过滤器链,然后传递给servlet,然后以相反的顺序通过过滤器返回。
过滤器与servlet的API略有不同:有一个名为doFilter()
的方法可以获得ServletRequest
和ServletResponse
。它通过chain.doFilter
使用相同的参数调用链的其余部分;在过滤器链的末尾,这些参数被传递给servlet。因此,过滤器可以更改甚至替换进入的请求对象,以及响应对象的出现。
还有更多信息here。