概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源得请求拦截下来,从而实现一些特殊得功能。
过滤器一般完成一些通用得操作:权限控制、统一编码处理、敏感字符处理等等。
image.png

Filter 执行流程

image.png
放行后访问对应资源,资源访问完成后,还会回到Filter中,执行放行后的逻辑。

image.png

Filter使用细节

Filter 拦截路径配置

1.拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截。—精确拦截;
2.目录拦截:/user/:访问/user下的所有资源,都会被拦截;
3.后缀名拦截:
.jsp:访问后缀名为jsp的资源,都会被拦截;
4.拦截所有:/*:访问所有资源,都会被拦截。
如果请求的URL地址不存在,但是匹配过滤的地址,还是会执行过滤器。

过滤器链

一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。
image.png
注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序。
image.png
用XML配置过滤器,那么@WebFilter注解就会被取消。

过滤器解决全局汉字乱码

服务器处理post请求提交中文数据会乱码,所以处理请求的所有资源都要重复冗余处理乱码
可以通过过滤器统一集中处理,从而达到资源代码减少冗余代码的目的。使用功能过滤器解决全站POST请求乱码.png

登录权限控制案例

登录验证:访问服务器资源时,需要先进行登录验证,如果没有登录,则自动跳转到登录页面。(比如说浏览淘宝,点击购物车,需要登录了才能跳到购物车)
image.png
image.png这些资源不登录账号就能访问,所以需要无条件放行。
登录验证.png