• 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:中谁定义在上面就先执行谁

  • 相关阅读:
    HDOJ_ACM_超级楼梯
    HDOJ_ACM_下沙的沙子有几粒?
    杭电_ACM_How Many Trees
    HDOJ_ACM_Tiling_easy version
    HDOJ_ACM_母牛的故事
    HDOJ_ACM_小兔的棋盘
    HDOJ_ACM_一只小蜜蜂
    杭电_ACM_Count the Trees
    HDOJ_ACM_折线分割平面
    Sun Solaris下JAVA以及JSP开发环境的配制小记
  • 原文地址:https://www.cnblogs.com/linjing111/p/12809713.html
Copyright © 2020-2023  润新知