filter过滤器相关操做

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

        第一种 生成HttpServletRequest的代理类app

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
 }ide

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

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);
 }代理

}htm

 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;
 }
 
}对象

相关文章
相关标签/搜索