> 文章列表 > 过滤器Filter

过滤器Filter

过滤器Filter

  • 什么是Filter?
    • Filter表示过滤器,是JavaWeb三大组件(Servlet、FIlter、Listener)之一。
    • 过滤器可以把对资源的请求拦截下来,总而实现一些特殊的功能
      • 使用过滤器后,要想访问web服务器上的资源,必须先经过过滤器,过滤器处理完毕后,才可以访问对应的资源。
    • 过滤器一般完成一些通用操作,必须:登录校验、统一编码处理,敏感字处理
  • Filter过滤器基本使用
    • 定义过滤器:定义一个类实现Filter接口,并重写其所有方法
      • @WebFilter(urlPatterns = "/*") //配置过滤器要拦截的请求路径( /* 表示拦截浏览器的所有请求 )
        public class DemoFilter implements Filter {@Override //初始化方法, 只调用一次public void init(FilterConfig filterConfig) throws ServletException {System.out.println("init 初始化方法执行了");}//在放行后访问完 web 资源之后还会回到过滤器当中,回到过滤器之后如有需求还可以执行放行之后的逻辑,放行之后的逻辑我们写在doFilter()这行代码之后。@Override //拦截到请求之后调用, 调用多次public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("Demo 拦截到了请求...放行前逻辑");//放行chain.doFilter(request,response);}@Override //销毁方法, 只调用一次public void destroy() {System.out.println("destroy 销毁方法执行了");}
        }
    • 配置过滤器:Filter类加上@WebFilter注解,配置拦截资源的路径。引导类上加@ServletComponentScan开启Serlet组件支持
      • @ServletComponentScan
        @SpringBootApplication
        public class TliasWebManagementApplication {public static void main(String[] args) {SpringApplication.run(TliasWebManagementApplication.class, args);}}
  • 拦截路径

  • 过滤器链

    • web应用程序当中,可以配置多个过滤器,多个过滤器形成了一个过滤器链。

    •  

    • 过滤器的先后执行顺序是由类名的自动排序确定的,类名排名越高,优先级越高。