org.springframework.web.filter.DelegatingFilterProxy是Spring实现的一个过滤器代理,通过这个过滤器代理,Spring可以将过滤器纳入Spring的管理范围,这样过滤器中就可以直接使用注解注入Spring容器中的对象。
接着,我将通过一个示例来介绍DelegatingFilterProxy的使用。
示例步骤一:
创建过滤器,并添加到Spring的配置文件中,例如创建了SecurityFilter的过滤器,那么需要在Spring的配置中添加一下内容。
<bean id="securityFilter"class="cn.xujh.filter.SecurityFilter"/>
示例步骤二:
在web.xml中配置DelegatingFilterProxy,spring支持两种配置方式。
方式一:过滤器的名称与Spring配置文件中设定的过滤器bean的名称一致。
方式二:使用初始化参数targetBeanName来配置过滤器名称
注意:如果要保留Filter原有的init,destroy方法的调用,还需要配置初始化参数targetFilterLifecycle为true,该参数默认为false。
如果我们不想使用Spring提供的过滤器代理,那么也可以通过以下方式获取Spring容器中的对象引用:
//获取WebApplicationContext对象
WebApplicationContext wac =null;
//方式一:
wac= (WebApplicationContext)sc.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
//方式二:
wac =WebApplicationContextUtils.getWebApplicationContext(sc);