Filter使用详解 Spring细节特性
- 2016-11-21 21:38:00
- admin
- 原创 1793
一、Filter使用详解
1、Filter用于拦截静态和动态资源,filter-mapping用于指定拦截哪些地址;
2、不同Filter可以拦截不同的地址,经验上拦截所有地址不容易产生安全漏洞;
3、Filter的执行顺序与在web.xml配置文件中的配置顺序一致,Filter一般配置在所有Servlet之后;
4、过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应;
5、chain.doFilter(request, response)前面的代码处理请求,后面的代码处理响应;
6、如果不调用chain.doFilter(request, response),则拒绝了具体业务逻辑;
filter典型配置:
<filter>
<filter-name>HttpRequestFilter</filter-name>
<filter-class>com.webank.core.HttpRequestFilter</filter-class>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>excludes</param-name>
<param-value>/login;</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HttpRequestFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
二、Spring细节特性
1、listener、servlet、filter加载顺序:context-param -> listener -> servlet -> filter
2、后缀匹配效果:/cgi/action可以匹配/cgi/action.*,spring5之前版本默认开启;
3、后缀匹配开启:mvc:annotation-driven增加<mvc:path-matching suffix-pattern="true"/>