当前位置:   article > 正文

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

filter不起作用
  1. public class TestFilter implements Filter {
  2. public void init(FilterConfig arg0) throws ServletException {
  3. }
  4. public void destroy() {
  5. }
  6. public void doFilter(ServletRequest request, ServletResponse response,
  7. FilterChain chain) throws IOException, ServletException {
  8. }
  9. }

要在web.xml中配置

  1. <filter>
  2. <filter-name>TestFilter</filter-name>
  3. <filter-class>com.wh.filter. TestFilter </filter-class>
  4. <init-param>
  5. <param-name>characterEncoding</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name> TestFilter </filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

自定义的filter,要实现Filter

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

这些都基础的废话。

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

  1. public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
  2. public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
  3. super(servletRequest);
  4. }
  5. public String[] getParameterValues(String parameter) {
  6. return encodedValues;
  7. }
  8. public String getParameter(String parameter) {
  9. return cleanXSS(value);
  10. }
  11. public String getHeader(String name) {
  12. return cleanXSS(value);
  13. }
  14. private String cleanXSS(String value) {
  15. 这里对value进行一些处理。
  16. return value;
  17. }
  18. }

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

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

缺了这个:

filterChain.doFilter(req, response);
前面调用 new  XssHttpServletRequestWrapper(req);仅仅是对request进行了处理,但处理了得保存呀,这个就类似于保存的功能。加上了果然起作用了。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔尖舞者/article/detail/61382
推荐阅读
相关标签
  

闽ICP备14008679号