• 过滤器(Filter)入门


    概述

    Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一.过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

    过滤器一般完成一些通用的操作。比如每个资源都要写一些代码完成某个功能,我们总不能在每个资源中写这样的代码吧, 而此时我们可以将这些代码写在过滤器中,因为请求每一个资源都要经过过滤器。

    创建第一个Filter

    定义类,实现 Filter接口,并重写其所有方法 ,配置Filter拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源。在doFilter方法中输出一句话,并放行

    1. package com.chen.filter;
    2. import javax.servlet.*;
    3. import javax.servlet.annotation.WebFilter;
    4. import java.io.IOException;
    5. @WebFilter("/*")
    6. public class FilterDemo implements Filter {
    7. @Override
    8. public void init(FilterConfig filterConfig) throws ServletException {
    9. }
    10. @Override
    11. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    12. System.out.println("放行前逻辑被执行");
    13. //放行前一般对request进行处理
    14. filterChain.doFilter(servletRequest,servletResponse);//放行
    15. System.out.println("放行后逻辑被执行");
    16. //放行后对request进行处理
    17. }
    18. @Override
    19. public void destroy() {
    20. }
    21. }

    执行流程

     

    放行后访问对应资源,资源访问完成后,还会回到Filter中吗?

    从上图就可以看出肯定 会 回到Filter中

    如果回到Filter中,是重头执行还是执行放行后的逻辑呢?

    如果是重头执行的话,就意味着 放行前逻辑 会被执行两次,肯定不会这样设计了;所以访问完资源后,会回到 放行后逻 辑 ,执行该部分代码。

    过滤器拦截路径的配置

    Filter拦截路径配置 拦截路径表示 Filter 会对请求的哪些资源进行拦截,使用 @WebFilter 注解进行配置。如: @WebFilter("拦截路径") 拦截路径有如下四种配置方式:

    拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截

    目录拦截:/user/*:访问/user下的所有资源,都会被拦截

    后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截

    拦截所有:/*:访问所有资源,都会被拦截

    拦截路径的配置方式和 Servlet 的请求资源路径配置方式一样,但是表示的含义不 同。

    过滤器链

    过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。

     注解配置的filter,执行的顺序,是按类名的排序顺序。比如的过滤器类名为A,那一定会比类名为B的过滤器执行的要先

  • 相关阅读:
    《Java8实战》读书笔记08:接口的默认方法
    NumPy 泊松分布模拟与 Seaborn 可视化技巧
    Linux (Centos 7) 自定义目录安装mysql - 精华版
    我反对独立开发者做笔记产品:从商业角度看笔记产品市场竞争
    服务器显卡:驱动高性能计算和人工智能应用
    MySQL数据库(表的CRUD基础操作(最常用))
    Vue源码阅读【番外篇】:为什么Proxy需要搭配Reflect来实现响应式?
    (Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程
    【计算机网络学习之路】Windows下的socket编程
    hadoop入门(八):配置历史服务器与查看
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/127769243