动态代理模式方法
实践代码
public class EncodingFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(FilterConfig filterConfig) throws IOException,ServletException {
final HttpServletRequest request = (HttpServletRequest) req;
HttpServletRequest requesrProxy = (HttpServletRequest)Proxy.newProxyInstance(
EncodingFilter.class.getclassLoader(),
new Class[]{HttpServletRequest.class},
new InvocationHandler(){
@Override
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
if("get".equals(request.getMethod())){
String value = (String) method.invoke(request,args);
return new String(value.getBytes("UTF-8"),"UTF-8");
}
}
return method.invoke(request,args);
}
});
chain.doFilter(requestProxy,response);
}
@Override
public void destroy(){
}
}