过滤器没起作用的,即自定义filter处理了数据但不起效果的原因

public  class  TestFilter  implements Filter {   
  
     public  void  init(FilterConfig arg0) throws ServletException {      
  
     }   
  
     public void destroy() {     
  
     }   
  
     public void doFilter(ServletRequest request, ServletResponse response,   
  
         FilterChain chain) throws IOException, ServletException {      
  
     }   
  
}    

要在web.xml中配置

     
  
       TestFilter   
  
       com.wh.filter. TestFilter   
            
            characterEncoding   
            UTF-8   
          
    
  
  
   
   
        TestFilter   
       /*  
  

自定义的filter,要实现Filter

其生命周期为init ,dofilter, destroy。

这些都基础的废话。

说说标题,最近要做处理一下request对象里面的内容,所以涉及到了filter。说起处理request,就得提

public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {  
    public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
        super(servletRequest);
    }
    public String[] getParameterValues(String parameter) {
      return encodedValues;
    }
    public String getParameter(String parameter) {
          return cleanXSS(value);
    }
    public String getHeader(String name) {
    
        return cleanXSS(value);
    }
    private String cleanXSS(String value) {
       这里对value进行一些处理。
       
        return value;
    }

} 

在自定义的filter中,调用了这个类,发现走了但是没起效果。郁闷了好几天,最后才发现,

req= new XssHttpServletRequestWrapper(req);
filterChain.doFilter(req, response);
return;

缺了这个:

filterChain.doFilter(req, response);
前面调用 new  XssHttpServletRequestWrapper(req);仅仅是对request进行了处理,但处理了得保存呀,这个就类似于保存的功能。加上了果然起作用了。

你可能感兴趣的:(日常问题)