介绍
当用户请求接口时,请求会先到过滤器,在到处理逻辑的接口,在过滤器中可以可以判断用户权限,如:是否登录,或请求前的一些操作,完成一下比较通用的操作,如:前端的AXIOS 的请求拦截器响应拦截器。
添加组件支持
启动类上添加@ServletComponentScan //开启组件支持
@ServletComponentScan

拦截路径
@WebFilter(urlPatterns =“”)加上该注解 表示该类为过滤器 ,urlPatterns 为拦截路径
- @WebFilter(urlPatterns = “/login”) //只拦截/login
- @WebFilter(urlPatterns = “/*”) //拦截所有
- @WebFilter(urlPatterns = “/login/*”) //拦截login下的所有接口
创建过滤器
继承于Filter 接口,并且实现他都三个方法
过滤器分为3个函数,也叫可以叫生命周期
doFilter:每次请求时执行的方法 每次请求都执行 必须重写
init: 服务器启动时执行的方法 一般用于加载资源或初始化 只执行一次 可以不重写
destroy: 服务器关闭时执行 (销毁) 只执行一次 可以不重写
@WebFilter “urlPatterns”参数:拦截哪类的请求
@WebFilter(urlPatterns="/*")//加上该注解 表示该类为过滤器
public class RequestFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   //每次请求时执行的方法
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
      //服务器启动时执行的方法 一般用于加载资源或初始化 只执行一次
        Filter.super.init(filterConfig);
    }
    @Override
    public void destroy() { 
    //服务器关闭时执行 (销毁) 只执行一次
        Filter.super.destroy();
    }
}
请求拦截
创建完成后,请求拦截主要在这个方法里,会传递3个对象参数进来
 ServletRequest servletRequest, //请求
 ServletResponse servletResponse,//响应
 FilterChain filterChain// 放行
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   //每次请求时执行的方法
		//....放行前执行的逻辑.....
        filterChain.doFilter(servletRequest,servletResponse);
        //放行该请求
        
		//....放行后执行的逻辑.....
    }

![[word] word页面视图放大后,影响打印吗? #笔记#学习方法](https://img-blog.csdnimg.cn/img_convert/2c901225278c93deb13e6db4722ee5af.jpeg)









![[AIGC] 21世纪Java与Go的相爱相杀](https://img-blog.csdnimg.cn/direct/6af1378f22b849dab5839a900fd4e1f1.png)







