2020-12-8 Filter过滤器

filter过滤器,本质上就是用来过滤servlet发送过来的请求,可以将一些乱码,骂人的词什么的过滤掉。

要实现这个方法,就要实现一个类,javax.servlet下面的Filter,注意不要导错包,要不然会出错。

实现接口之后,就要重写三个方法,
init, doFilter,和destory
init初始化,doFilter过滤,destory销毁。

具体的代码在doFilter里面实现。
过滤乱码什么的,例如:

import javax.servlet.*;
import java.io.IOException;

public class CharacterEncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletResponse.setCharacterEncoding("utf-8");
        servletResponse.setContentType("text/html;charset=UTF-8");
        //这段代码必须加,不加就会卡主,无法往下继续运行!!

//这段代码的作用就是,转发给下一个条链,如果下一链存在的话,如果不存在就直接跳转到servlet        
filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

写完这个类之后,记得在xml里面配好filter的配置,跟servlet差不多。

不过filterMapping里面的urlpattern 配置的是在那些地方生效。
例如

  <filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>

这个就是在servlet下面的所有资源都过滤。

这个doFilter的跳转顺序,就是xml中配置的顺序,如果都在同一目录的话,会优先选上面的。

上一篇:Servlet读书笔记(四)ServletRequest和ServletResponse的对象讲解


下一篇:ServletResponse