代理模式的相关使用

 本例子主要是处理request编码问题

public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        final HttpServletRequest request1=(HttpServletRequest) request;
        request.setCharacterEncoding("utf-8");
        //创建代理对象
        HttpServletRequest p=(HttpServletRequest) Proxy.newProxyInstance(request1.getClass().getClassLoader(),
                new Class[]{HttpServletRequest.class}
                ,new InvocationHandler() {

                    public Object invoke(Object proxy, Method method, Object[] args)
                            throws Throwable {
                        Object returnValue=null;
                        String m=method.getName();
                        if("getParameter".equals(m)){
                            //对get方法进行处理
                            String value=request1.getParameter(args[0].toString());
                            String me=request1.getMethod();
                            if("GET".equals(me)){
                                value=new String(value.getBytes("iso8859-1"),"utf-8");
                            }
                            return value;

                        }else{
                            returnValue=method.invoke(request1, args);
                        }
                        return returnValue;
                    }
                });
        System.out.println("过滤器执行");
        chain.doFilter(p, response);
    }
时间: 2024-08-04 03:31:08

代理模式的相关使用的相关文章

理解Android系统的进程间通信原理(一)----RPC中的代理模式

Android系统中的进程间通信是通过一个轻量级的RPC(Remote Procedure Call远程进程调用)和AIDL(Android Interface Definination Language)规范来生成两个进程之间可以相互访问的代码.其中RPC是以接口方式来实现,客户端与被调用实现之间是通过代理模式来实现的,这些又是以JAVA的RMI和代理模式为理论基础的,若要灵活掌握这个轻量级的解决方案,有必要重新理顺这些基础知识的,这里我们先了解代理模式的相关基础, 有关代理模式的知识,可以用

与接口相关的设计模式(2):代理模式、标识类型模式及常量接口模式

在上文与接口相关的设计模式(1)中,详细介绍了定制服务模式和适配器模式,下面我们来看第三种与接口相关的模式:代理模式. 代理模式 定义:为对象提供一种代理,以控制对这个对象的访问. 分类: 远程代理(Remote Proxy)-为不同地理的对象提供局域网代表对象.(类似于客户端和服务器端) 虚拟代理(Virtual Proxy)-根据需要将资源消耗很大的对象进行延迟,真正需要的时候才进行创建.(网页中图片的加载,先用一张虚拟的图片进行显示,等图片加载完成后再进行显示) 保护代理(Protect

代理模式(转)

1.  简介 代理模式(Proxy Pattern)是GoF 23种Java常用设计模式之一.代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个对象的访问).使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象.创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能. 2.  UM

【设计模式】代理模式

代理模式在所需对象和用户代码之间增加了一层对象,这个对象被称为代理.用户代码只需要直接操作代理对象即可.著名的代理模式的例子就是引用计数指针对象,它使得我们对真实对象的操作都需要经过引用计数指针对象.下面是用C++写的一个运用了代理模式的例子. #include <iostream> #include <string> using namespace std; // 作为接口的抽象基类 class Subject { public: virtual void DoAction()

设计模式之代理模式(Proxy)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

代理模式小试

一.介绍 什么是代理模式. 惯例,我们先看一下<研磨设计模式>中的介绍--为其他对象提供一种代理以控制对这个对象的访问.代理模式的本质是--控制对象访问. 什么意思呢? 就是我们每次访问一个对象的时候,实际上去访问这个对象的代理.这个代理实际上就是这个对象的替身,可以实现原本对象绝大多数的功能.只有当需要某些特殊功能的时候,才去调用原本的对象.这样一来,在不修改原对象的情况下,就可以在代理对象上实现很多特殊的功能.这些功能基本都属于访问控制. 这里所说的代理跟我们平时所说的各种代理,其实就是一

Android知识体系梳理笔记三:动态代理模式---插件加载机制学习笔记

静态代理模式 静态代理模式就是我们常说的代理设计模式,我们采用一个代理类调用原有的方法,且对产生的结果进行控制:举个例子:我们现在在玩一款网络游戏,需要打怪升级:太累就找个代理吧,一觉醒来就会发现我们已经当上CEO,迎娶白富美,天下第一了! 本来我们只能打怪,打怪-,但经过代理类增强,我们不仅可以打怪,还可以升级拿装备.就这样子了! 上代码: * 同一功能接口 public interface PlayNetGame { String beatMonster(); } 1 2 3 4 1 2 3

设计模式(十一)代理模式Proxy(结构型)

1.概述 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提 供一致的接口给某个对象让它可以改变其内部功能,或者是从来不存在的功能? 可以通过引入一个新的对象,来实现对真实对象的操作或者将新的对象作为真实对象的一个替身.即代理对象.它可以在客户端和目标对象

设计模式【代理模式】

首先我们先了解代理,代理是指一个人或者一个机构代表另一个人或者机构采取行动.代理模式给某一个对象提供一个代理对象,并由代理对象控制对象控制对原对象的引用. 代理模式一般涉及三个角色: Subject:抽象角色,声明真实对象和代理对象的共同接口:     Proxy:代理角色,代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象鱼与真 实对象相同的接口以便在任何时刻都能代替真实对象.同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装.简言之,代理