在我们的web.xml中,我们有以下几行:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring</param-value>
<init-param>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<filter-mapping>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/<url-pattern>
<servlet-mapping>
spring-servlet.xml文件定义了过滤器配置的元素。
我的问题是:当http请求发送到此应用程序时,哪个实体(DispatcherServlet或过滤器)将首先看到请求?过滤器是否会对请求执行操作并将其移交给DispatcherServlet?或者DispatcherServlet是否接受请求并将其提供给过滤器?
非常感谢你的帮助。
答案 0 :(得分:3)
在Servlet之前总是调用过滤器。当您拥有与URL模式匹配的过滤器和servlet时,首先按<filter-mapping>
定义的顺序执行所有过滤器,然后将request
和response
传递给Servlet。从Spring MVC的角度来看,您正在寻找的是HandlerInceptor。