Filter过滤器

Filter过滤器

当访问服务器资源时,过滤器可以将请求拦截下来,完成一些特殊的功能

  1. 过滤器的作用:
    • 一般用于完成通用操作, 如登录验证 / 同一编码 / 敏感字符的过滤
  2. 编写步骤:
    1. 定义一个类,实现接口Filter
    2. 复写方法
    3. 配置拦截路径
      • 注解配置: @WebFilter
      • web.xml配置
<filter>    
    <filter-name>firstFilter</filter-name>    
    <filter-class>cn.study.l18.web.filter.FirstFilter</filter-class>
</filter>
<filter-mapping>    
    <filter-name>firstFilter</filter-name>
    <!-- 拦截路径 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. 过滤器细节:
    1. web.xml配置
    2. 过滤器执行流程
      1. 执行过滤器
      2. 执行放行后的资源
      3. 回来执行过滤器放行代码下的代码
    3. 过滤器生命周期方法
      1. init() -> 在服务器启动后创建Filter对象调用init方法
      2. doFilter() -> 每一次请求拦截资源时被执行
      3. destroy() -> 在服务器关闭后,Filter被销毁,正在关闭时执行destroy()方法
    4. 过滤器配置
      1. 拦截路径: urlPatterns
        1. 具体资源路径: /index.jsp
        2. 目录拦截: /user/*
        3. 后缀名拦截: *.jsp
        4. 拦截所有资源: /*
      2. 拦截方式(资源被访问的方式):
        • 注解配置: dispatcherTypes
          1. REQUEST: 默认值 - 浏览器直接请求
          2. FORWARD: 服务器转发访问
          3. INCLUDE: 包含访问资源
          4. ERROR: 错误跳转资源
          5. ASYNC: 异步访问资源
        • web.xml配置:标签即可
    5. 过滤器链(配置多个过滤器)
      • 执行顺序: 如果有两个过滤器: 1, 2
        • 过滤器1 -> 过滤器2 -> 资源执行 -> 过滤器2 -> 过滤器1
      • 过滤器先后顺序配置:
        • 注解配置: 按照类名的字符串比较规则比较, 值小的先执行
        • web.xml配置: 谁先定义,谁先执行
  2. 案例:
    • 案例1:登录验证:
      1. 访问案例资源,验证其是否登录
      2. 如果登录了,直接放行
      3. 如果没有登录,则跳转到登录页面,提示:您尚未登录,请先登录
    • 案例2: 敏感词汇过滤
      1. 对案例录入的数据进行敏感词汇过滤
      2. 如果是敏感词汇,替换为***
      • 分析:
        1. request对象进行增强,增强获取参数相关方法
        2. 放行,传递代理对象
  3. 代理设计模式(动态代理):
    • 真实对象: 被代理的对象
    • 代理对象: 代理真实的对象
    • 代理模式: 代理对象代理真实对象,达到真实对象功能的目的
    1. 实现方式:
      1. 静态代理: 有一个类文件描述代理模式
      2. 动态代理: 在内存中形成代理
    2. 实现步骤:
      1. 代理对象和真实对象实现相同的接口
      2. 代理对象 = Proxy.newProxyInstance()
      3. 使用代理对象来调用方法
      4. 增强方法
    3. 增强方式:
      1. 增强参数列表
      2. 增强返回值类型
      3. 增强方法体执行逻辑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值