zoukankan      html  css  js  c++  java
  • 2阶——动态代理 (方法增强,参数增强,方法体增强)小Demo敏感词汇过滤

    动态代理的格式

    Porxy.newProxyInstance(
        ClassLoader loader,       //指定当前目标对象使用类加载器
        Class<?>[] interfaces,     //目标对象实现的接口的类型
        new InvocationHandler() { //事件处理器
             @Override
             public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
        }       
    )  
            

    //方法返回值的增强案例 敏感词汇过滤

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)servletRequest;
            HttpServletResponse response = (HttpServletResponse)servletResponse;
    
            //用接口类型来接收代理对象
            HttpServletRequest res = (HttpServletRequest)Proxy.newProxyInstance(
                    request.getClass().getClassLoader(),  //需要代理对象的类加载器
                    request.getClass().getInterfaces(),   //需要代理对象的类所实现的接口
                    new InvocationHandler() {   //处理器
                        @Override
                        public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
                            
                            if(method.getName().equalsIgnoreCase("getParameter")){
    
                                //获取方法的原始返回值
                                String value = (String) method.invoke(request,objects);
    
                                if(value !=null){
                                    if(value.contains("XXX") || value.contains("xxxx")){
                                        value = value.replaceAll("xxx", "*****");
                                    }
                                }
                                return value;
                            }
    
    
                            //如果是其他的方法  一个方法可以实现 参数增强,返回值增强 和方法提增强  这里的return是指代返回值
                            return method.invoke(request,objects);
                        }
                    });
    
            filterChain.doFilter(res,response);
    
    }
    坚持
  • 相关阅读:
    js 黑科技操作
    js判断是否是苹果浏览器
    rem750.js
    写过的bug
    mongdb学习
    [刘阳Java]_第一个Java程序_第7讲
    [刘阳Java]_步步窥探JS变量作用域
    [刘阳Java]_Web前端笔试题总结
    [刘阳Java]_酷炫视频播放器制作_JS篇
    [刘阳Java]_酷炫视频播放器制作_界面篇
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12935856.html
Copyright © 2011-2022 走看看