每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

Filter简单学习

Filter

  • 过滤器的作用:完成通用的操作---->例如:登录验证,统一编码处理,敏感字符过滤...

  • 步骤:

    • 1.定义一个类实现Filter接口

    • 2.复写方法

    • 3.配置拦截路径---->两种方法:

      • a.注解配置

        @WebFilter("/拦截的路径")
        
      • b.web.xml配置

        <!--注册Filter-->
        <filter>
            <filter-name>TestFilter</filter-name>
            <filter-class>com.km.servlet.TestFilter</filter-class>
          </filter>
        <!--映射Filter-->
          <filter-mapping>
            <filter-name>TestFilter</filter-name>
            <url-pattern>/test</url-pattern>
          </filter-mapping>
        
  • 过滤器执行流程---->首先过滤,然后放行,之后返回过滤器至放行点执行

  • 过滤器生命周期方法:

    • 1.init:服务器启动时创建Filter对象时会调用init方法执行一次
    • 2.doFilter:每次请求的时候都会执行一次,可执行多次
    • 3.destroy:服务器被正常关闭时执行一次
  • 过滤器配置详解:

    • 拦截路径配置:

      • 具体路径配置:/index.jsp,只有访问index.jsp时过滤器会被执行
      • 拦截目录:/user/* 访问 /user下的所有资源时,过滤器会被执行
      • 后缀名拦截:*.jsp 访问所有jsp资源时,过滤器都会被执行
      • 拦截所有资源:/* 访问所有资源时过滤器都会被执行
    • 拦截方式配置:资源被访问的方式

      • 注解配置---->设置dispatcherTypes属性---->

        • REQUEST:默认值,浏览器直接请求资源
        • FORWARD:转发访问资源
        • INCLUDE:包含访问资源
        • ERROR:错误跳转资源
        • ASYNC:异步访问资源
      • web.xml配置

          <filter-mapping>
            <filter-name>TestFilter</filter-name>
            <url-pattern>/test</url-pattern>
            <dispatcher>REQUEST</dispatcher> <!--配置此标签-->
          </filter-mapping>
        
  • 过滤器链(配置多个过滤器)

    • 执行顺序:如果有多个过滤器,逐层进入,逐层退出
    • 先后顺序:
      • 注解配置:按照类名的字符串比较规则比较,值小的先执行
        • AFilter先于BFilter执行
      • web.xml配置:先执行配置在前的filter-mapping
  • 增强对象的功能

    • 设计模式:一些通用的解决固定问题的方式---->23种设计模式

    • 代理模式:

      • 概念---->

        • 真实对象:被代理的对象
        • 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
        • 代理对象
      • 实现方式---->

        • 静态代理:有一个类文件描述代理模式
        • 动态代理:在内存中形成代理类
      • 实现步骤---->

        • 代理对象和真实对象实现相同的接口

        • 代理对象=Proxy.newProxyInstance()---->

          三个参数:真实对象的classloader,真实对象的接口数组,处理器的参数---->

          proxy代理对象,代理对象调用的方法,args代理对象调用方法时,传递的实际参数

        • 增强方式:

          • 增强参数列表
          • 增强返回值类型
          • 增强方法体执行逻辑
    • 装饰模式:

posted @ 2020-11-15 14:28  雨下整夜~  阅读(79)  评论(0)    收藏  举报