您的位置:首页 > 其它

DelegatingFilterProxy的作用

2018-03-01 18:10 387 查看
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
</filter-mapping>

2.4版本的servlet规范在部属描述符中新增加了一个<dispatcher>元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何< dispatcher >元素,默认值是REQUEST。

使filter可以使用spring中的bean,达到可插拔的效果。比如你可以使用shiro或者springSecurity等安全框架来进行权限管理,这样也算是使安全验证这一块与spring解耦。

 具体过程:web.xml中的ContextLoaderListener会将spring及你使用的shiro或者springSecurity的相关配置文件加载,然后初始化声明的bean,这其中就有filter中要用到的bean;这样filter用到这些bean的时候就可以到spring的bean容器中去取了。

就是一个filter的代理,最终的目的是让这个filter拥有使用spring管理的bean的权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: