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);
    
    }
    坚持
  • 相关阅读:
    AC自动机模板
    hdu 6034 贪心模拟 好坑
    UVA 10870
    hdu 2604 递推 矩阵快速幂
    hdu 3117 Fibonacci Numbers 矩阵快速幂+公式
    hdu 1575 Tr A 矩阵快速幂
    POJ_1151 扫描线+离散化+线段树
    HDU_2227 求不减子序列的个数(树状数组+DP)
    深夜敲模板_5——KMP
    深夜敲模板_4——无向图的割顶和桥
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12935856.html
Copyright © 2011-2022 走看看