过滤器没起作用的,即自定义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中配置

<filter>     
  
       <filter-name>TestFilter</filter-name>   
  
       <filter-class>com.wh.filter. TestFilter </filter-class>  
       <init-param>     
            <param-name>characterEncoding</param-name>   
            <param-value>UTF-8</param-value>   
       </init-param>   
</filter>    
  
  
   
<filter-mapping>   
       <filter-name> TestFilter </filter-name>  
       <url-pattern>/*</url-pattern>  
</filter-mapping>  

自定义的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进行了处理,但处理了得保存呀,这个就类似于保存的功能。加上了果然起作用了。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值