Filter——概述、应用、Filter的使用 & 细节

Filter概述

过滤器:一个拥有过滤/拦截功能的东西,过滤掉一些不想要的,不和谐的东西.
Web中的过滤器(Filter):Web中的一个组件/程序,就好比Servlet,过滤器就是一个特殊的类. 双向,拦截请求,拦截响应.
1.Filter的作用
过滤器可以对所有的请求或者响应做拦截操作.
    1.以常规的方式调用资源(Servlet/JSP);
    2.利用修改过的请求信息调用资源;
    3.调用资源之后,但在响应到客户端之前,对响应做出修改;
    4.阻止当前资源调用,代之转到其他资源.
2.过滤器的应用
    1.完成通用的操作
        在开发中两个重要的思想:
            1.DRY原则: Don’t Repeat Yourself. 开发中拒绝代码重复(因为重复会带来巨大的维护成本)
            2.责任分离原则: 各自做各自最擅长的事情
    2.可以对请求中的字符做编码
    3.登录验证过滤器
    4.对敏感字符的过滤

Filter的开发和使用

1.快速入门:
        1.定义一个类,实现Filter接口
        2.覆写方法
        3.配置拦截路径
            1.web.xml
            2.注解
        4.在doFilter()中定义处理请求和响应的代码

1.web.xml:

ABC
Filter的全限定名称


ABC
/资源名

url-pattern的文本内容, 如:
1: /hello.jsp --------------------> 当前Filter就仅仅只对hello.jsp资源做拦截.
2: /index --------------------> 当前Filter就仅仅只对/index资源做拦截.
3:/* --------------------> 当前Filter就对所有资源做拦截.访问任意的资源,都会先进入该过滤器器.
4:/system/* --------------------> 当前Filter就对以/system/打头的资源做拦截.
2.配置注解:@WebFilter("/*")

过滤器细节

1.过滤器执行流程
    1.请求先经过过滤器
    2.经过过滤器过滤后再请求资源
    3.请求完资源后再回到过滤器

注:两个经过过滤器会对request对象请求数据进行增强,对response对象响应数据进行增强(即过滤数据)

2. 生命周期方法
1.init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行
2.doFilter(ServletRequest,ServletResponse,FilterChan) :代表filter执行过滤的核心方法,如果某资源在已 经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行
3.doFilter方法 destory() :代表是filter销毁方法 当filter对象销毁时执行该方法
3.过滤器配置详解
拦截方式的配置
1.注解配置(设置配置文件的dispatcherTypes属性)
1.Request:默认值,浏览器直接请求资源
2.Forward:转发资源
3.NCLUDE:包含访问资源
4.ERROR:错误跳转资源
5.ASYNC:异步访问资源
2.web.xml配置
配置标签即可
//浏览器直接请求index.jsp资源时,该过滤器会被执行
@WebFilter(value="/index.jsp" dispatcherTypes=DispatcherType.Request)
//只有转发index.jsp资源时,该过滤器才会被执行
@WebFilter(value="/index.jsp" dispachterTypes=DispatcherType.Forward)
//浏览器直接请求index.jsp资源,转发index.jsp资源时,该过滤器会被执行
@WebFilter(value="/index.jsp" dispatcherTypes={Dispatcher)
4.过滤器链(配置多个过滤器)
只有所有的过滤器都对请求进行了放行,请求才能访问到目标资源,只要多个过滤器中只有一个过滤器不放行 请求,那么这个请求都不能够访问到目标资源。多个过滤器组成的一个整体我们称为过滤器链。而且,过滤器链中 的过滤器是一个一个的执行的,一个过滤器执行完毕之后,会执行下一个过滤器,后面没
有过滤器了,才会访问到 目标资源。只要其中一个过滤器没有放行,那么这个过滤器后面的过滤器也都不会执行了。
1.执行顺序
1.过滤器1
2.过滤器2
3.资源执行
4.过滤器2
5.过滤器1
2.过滤器先后顺序
1.注解配置:按照类名的字符串比较规则进行比较,值小的先执行
eg:AFilter 和 BFilter,AFilter 先执行
2.web.xml:中谁定义在上面就先执行谁

原文地址:https://www.cnblogs.com/linjing111/p/12809713.html