DelegatingFilterProxy就是一個對於servlet filter的代理,用這個類的好處主要是通過Spring容器來管理servlet filter的生命週期,還有就是如果filter中需要一些Spring容器的實例,可以通過spring直接注入,另外讀取一些配置文件這些便利的操作都可以通過Spring來配置實現。
DelegatingFilterProxy的使用方法,
首先在web.xml中配置:
- <filter>
- < filter-name>myFilter</filter-name>
- < filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- </filter>
- <filter-mapping>
- < filter-name>myFilter</filter-name>
- < url-pattern>/*</url-pattern>
- </filter-mapping>
然後在Spring的配置文件中,配置具體的Filter類的實例。
<bean name="myFilter" class="com.*.MyFilter"></bean>
在Spring中配置的bean的name要和web.xml中的<filter-name>一樣
或者在DelegatingFilterProxy的filter配置中配置初始參數:targetBeanName,對應到Spring配置中的beanname
如果要保留Filter原有的init,destroy方法的調用,還需要配置初始化參數targetFilterLifecycle爲true,該參數默認爲false
- <filter>
- <filter-name>DelegatingFilterProxy</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- <init-param>
- <param-name>ignoreUrls</param-name>
- <param-value>/caClient.jsp,/403.jsp,/login.html*,/j_spring_security_check,/accounts/**,/secure/logout,/js/**,/app/**,/images/**,/icons/**,/lib/**,/resource/**,/secure/changepassword</param-value>
- </init-param>
- <init-param>
- <param-name>targetBeanName</param-name>
- <param-value>commonWebFilter</param-value>
- </init-param>
- <init-param>
- <param-name>targetFilterLifecycle</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>DelegatingFilterProxy</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
applicationContext.xml
- <bean id="commonWebFilter" class="com.wonders.LoginFilter"/>