public class GenericalEncodingFilter extends HttpServletRequestWrapper{
//定义改变后的请求
private HttpServletRequest request;
public GenericalEncodingFilter(HttpServletRequest request) {
super(request);//调用父类的构造方法
this.request = request;
}
//增强request的getParamter方法;
@Override
public String getParameter(String name){
//根据请求方法的不同去处理
//获得请求方式
String method = request.getMethod();
String value=null;
if("post".equalsIgnoreCase(method)){
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.getParameter(name);
}else if ("get".equalsIgnoreCase(method)) {
try {
value= new String(request.getParameter(name).getBytes("utf-8"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return value;
}
}
使用装饰者模式增强request的getParamter()方法
注意:使用装饰者模式的前提:【1、被增强的类和增强的类实现相同的接口,2、在增强的类中获得被增强的类的引用】