zoukankan      html  css  js  c++  java
  • 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:中谁定义在上面就先执行谁

  • 相关阅读:
    独一份秘籍 | 开发数字孪生3D可视化炫酷场景?还有MAC电脑大奖可拿!
    数字孪生城市,如何破旧立新?ThingJS
    官方示例(十六):3D场景中BIM剖切面参数化开发ThingJS
    官方案例(十五):3D开发构造器参数测量多边形面积 ThingJS
    如何在Spring Boot 中使用 HandlerMethodArgumentResolver
    python的基本数据类型
    canvas 隐藏 踩坑
    小程序canvas 圆角框带填充颜色
    小程序 canvas 文字加粗
    flex布局 一行4个元素 后面不够4个元素对齐
  • 原文地址:https://www.cnblogs.com/linjing111/p/12809713.html
Copyright © 2011-2022 走看看