admin 管理员组

文章数量: 1087582

Spring MVC过滤器

在Spring中可以使用很多种方式来实现request的转发,将页面提交的request转发到Controller中,而实现这一功能的原理即是设置LocaleContextHolder和RequestContextHolder,这些方式包括:

        1. 在web.xml中配置RequestContextListener和DispatcherServlet,配置代码如下所示:

        <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:dispatcher.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>*.html</url-pattern></servlet-mapping>

        2. 在web.xml中配置RequestContextFilter,这种方式通常是用于配置第三方servlet,如jsf时,配置代码如下所示:

        <filter><filter-name>Acegi Filter Chain Proxy</filter-name><filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class><init-param><param-name>targetBean</param-name><param-value>acegiFilterChainProxy</param-value></init-param></filter><filter-mapping><filter-name>Acegi Filter Chain Proxy</filter-name><servlet-name>Faces Servlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher></filter-mapping><filter><filter-name>RequestContextFilter</filter-name><filter-class>org.springframework.web.filter.RequestContextFilter</filter-class></filter><filter-mapping><filter-name>RequestContextFilter</filter-name><servlet-name>Faces Servlet</servlet-name></filter-mapping>
        所以我们可以这么理解,当我们不使用第三方servlet时,我们只需要使用DispatcherServlet就可以配置spring,若我们使用第三方servlet,那么我们可以选用RequestContextFilter。

        当然,jsf的配置未必就必须如上所述,但这不是本文的重点。

本文标签: Spring MVC过滤器