敏感词过滤案例(Filter过滤器)

敏感词汇过滤

  • 需求

    1. 对UserCRUD_case案例中录入的数据进行敏感词汇的过滤
    2. 敏感词汇参考《敏感词汇.txt》
    3. 若是敏感词汇,则替换为***
  • 分析

    • 在进行过滤前后,所获取的request请求对象是同一个,所以我们可以对该对象进行一些修改,然后继续使用该对象
    • 由于request对象中默认不存在修改数据的方法,所以关键是对request对象的getParameter方法进行增强;产生一个新的request对象
    • 放行。传递代理对象
  • 如何增强对象的功能?

    • 设计模式 :一些通用的解决固定问题的模式
      • 可以增强对象功能的设计模式
        1. 装饰模式
        2. 代理模式
          • 概念
            • 真实对象 :被代理的对象
            • 代理对象
            • 代理模式 :代理对象来代理真实对象,来实现增强真实对象功能的目的
          • 实现方式
            1. 静态代理 :有一个类文件藐视代理模式
            2. 动态代理 :在内存中形成代理类
              • 实现步骤
                1. 代理对象和真实对象实现相同的接口
                2. 代理对象 = Proxy.newProxyInstance();
                3. 使用代理对象调用方法
                4. 增强方法
              • 增强方式
                1. 增强参数列表
                2. 增强返回值类型
                3. 增强方法体执行逻辑
  • 本次案例只需要将request请求对象中的敏感词汇替换,然后封装到新的request对象中即可,所以可以选择使用增强返回值类型方法的代理模式来实现

  • 实现getParmeter方法增强的代码:

    package web.filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import java.io.*;
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值