public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
//处理poset提交方法,参数的中文乱码
request.setCharacterEncoding("utf8");
//处理响应内容的中文乱码
response.setContentType("text/html;charset=utf8");
//动态代理
//创建一个HttpServletRequest的对象的代理对象
//第一个参数:代理的对象的类加载器
//第二个参数,代理的对象的Class类型
//第三个参数,InvocationHandler的对象,重写invoke方法,实现对代理的对象的某些方法的功能上的扩展(执行被代理的对象的 接口方法)
HttpServletRequest proxyRequset = (HttpServletRequest)Proxy.newProxyInstance(
HttpServletRequest.class.getClassLoader(),
new Class[]{HttpServletRequest.class},
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
//获取方法名
String mName = method.getName();
//对getParameter方法进行功能扩展
if(mName.equals("getParameter")){
String v = request.getParameter((String)args[0]);
if(v == null || v.equals("")){
return null;
}
//获取表单提交方法
String m = ((HttpServletRequest)request).getMethod();
//处理get提交方式的中文乱码
if(m.equalsIgnoreCase("get")){
v = new String(v.getBytes("iso-8859-1"), "utf8");
}
//处理敏感词
for(String str : dirtyList){
if(v.contains(str)){
v = v.replace(str, "***");
}
}
return v;
}else{
//其他不需要特殊处理的方法,直接调用
return method.invoke(request, args);
}
}
});
// pass the request along the filter chain
//将httpservletrequest的代理对象传递给要访问的资源
chain.doFilter(proxyRequset, response);
}
动态代理模式(w10_2)匿名内部类形式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- iOS 系统会通过一个称之为 Core Animation Compositor (核心动画合成器[系统组件])去...