Spring MVC过滤器-RequestContextFilter

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

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

  1.        <listener>  
  2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  3. </listener>  
  4. <servlet>  
  5.     <servlet-name>spring</servlet-name>  
  6.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  7.     <init-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>classpath:dispatcher.xml</param-value>  
  10.     </init-param>  
  11. </servlet>  
  12. <servlet-mapping>  
  13.     <servlet-name>spring</servlet-name>  
  14.     <url-pattern>*.html</url-pattern>  
  15. </servlet-mapping>  
        <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时,配置代码如下所示:

  1.        <filter>  
  2.     <filter-name>Acegi Filter Chain Proxy</filter-name>  
  3.     <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>  
  4.     <init-param>  
  5.         <param-name>targetBean</param-name>  
  6.         <param-value>acegiFilterChainProxy</param-value>  
  7.     </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.     <filter-name>Acegi Filter Chain Proxy</filter-name>  
  11.     <servlet-name>Faces Servlet</servlet-name>  
  12.     <dispatcher>FORWARD</dispatcher>  
  13.     <dispatcher>REQUEST</dispatcher>  
  14. </filter-mapping>  
  15.   
  16. <filter>  
  17.     <filter-name>RequestContextFilter</filter-name>  
  18.     <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>  
  19. </filter>  
  20. <filter-mapping>  
  21.     <filter-name>RequestContextFilter</filter-name>  
  22.     <servlet-name>Faces Servlet</servlet-name>  
  23. </filter-mapping>  
        <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的配置未必就必须如上所述,但这不是本文的重点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值