动态代理创建的核心代码:
	TargetInterface objProxy = (TargetInterface) Proxy.newProxyInstance(
				Target.class.getClassLoader(),//与目标对象相同的类加载器
				new Class[]{TargetInterface.class},
				new InvocationHandler() {
					
					@Override
					//proxy 即该代理对象
					//method 代理对象的方法,里面封装这接口中的所有方法
					//args 目标对象的参数	
					public Object invoke(Object proxy, Method method, Object[] args)
							throws Throwable {
						Object invoke = method.invoke(new Target(), args); //调用的是目标对象相应的方法
						return invoke;	//返回值是代理对象的,如果想要代理对象的返回值与目标对象的返回值一致的话,使用return invoke;
					}
				});		
	动态代理的用处:解决全局乱码问题
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		final HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		/**
		 * 使用动态代理完成乱码问题
		 */
		HttpServletRequest proxyInstance = (HttpServletRequest) Proxy.newProxyInstance(
				req.getClass().getClassLoader(),
				req.getClass().getInterface(),
				new InvocationHandler() {
					
					@Override
					public Object invoke(Object proxy, Method method, Object[] args)
							throws Throwable {
						if("getParameter".equals(method.getName())){
							String invoke = (String) method.invoke(req, args);//乱码
							invoke = new String(invoke.getBytes("ISO-8859-1"), "UTF-8");
							System.out.println(invoke);
							return invoke;
						}
						return method.invoke(req, args);
					}
				});
		chain.doFilter(proxyInstance, resp);
	}
动态代理 -- 不用手动编写一个代理对象,不需要编写与目标对象相同的方法,在运行时内存中动态生成代理对象。
原文:http://www.cnblogs.com/empcl1314/p/7041453.html