您的位置:首页 > 其它

filter过滤器相关操作

2016-04-23 00:00 281 查看
摘要: filter过滤器

servlet过滤器filter对于reqeust请求的参数有两种方式

第一种 生成HttpServletRequest的代理类

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
final HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
HttpServletRequest proxy=(HttpServletRequest) Proxy.newProxyInstance(
request.getClass().getClassLoader(),
new Class[] {HttpServletRequest.class},
new InvocationHandler(){
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
//第一个代理对象 第二个目标方法 第三个目标方法参数
String methodName=method.getName();
if("getParameter".equals(methodName)){
String requestValue=request.getParameter(args[0].toString());
String submitMethod=request.getMethod();
if("get".equalsIgnoreCase(submitMethod)){
if(requestValue!=null && !"".equals(requestValue.trim())){
requestValue=new String(requestValue.getBytes("ISO8859-1"),"utf-8");
}
}
return requestValue;
}else{
//放行
return method.invoke(request, args);
}
}

});
arg2.doFilter(proxy, response);//一定要放行 并且request放行的是代理对象 否则无法进入servlet
}

第二种 继承HttpServletRequest的适配器HttpServletRequestWrapper的类

public class DataFilter implements Filter {
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
MyRequestData myRequest=new MyRequestData(request);
chain.doFilter(myRequest, response);
}

}

class MyRequestData extends HttpServletRequestWrapper{
public MyRequestData(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name){
String[] words={"nnd","nimabi","mabi"};
String value=super.getParameter(name);
for(String word:words){
if(value.contains(word)){
value="*************";
}
}
return value;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: