过滤器Filter

1. Filter简介

Filter,过滤器,顾名思义,用于过滤东西的,在JavaWeb中的过滤器位于客户端和后端服务器资源之间,过滤客户端发送过来的请求。

在java中常用于权限拦截,放行符合条件的请求,如,对于某些敏感资源,需要携带token或者需要登陆后才可以访问,如果请求没有携带token或没有登陆,则拦截不允许访问,否则放行请求。

也用于做功能增强,在某些请求中,想要记录请求的ip,请求参数等,可以在过滤器中添加相关逻辑实现,因为操作粒度的问题,目前springmvc的拦截器使用更多一点。

注意,拦截器是一项Servlet技术,它和servlet以及servletListener是servlet的三大最重要组件。它依赖于tomcat等web容器。

2. 过滤器使用

2.1 springboot配置过滤器

2.1.1 创建拦截器类

先创建Filter类Filter1,实现Filter接口,注意这里实现的接口是servlet下的,它是一项servlet技术。

package com.william.filter;

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

public class Filter1 implements Filter {
   

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
    }

    @Override
    public void destroy() {
   
        Filter.super.destroy();
    }
}
2.1.2 重写方法

Filter接口中定义了三个方法,init/doFilter/destory,它们就是过滤器的生命周期方法。

init在filter初始化阶段被调用,destroy在filter摧毁的时候调用,整个生命周期中都只会被调用一次。

doFilter方法是最重要的方法,他在过滤请求的时候调用,默认传入的参数中我们可以拿到请求中携带的所有参数以及请求返回的所有参数。

一般init方法和destroy方法很少使用,doFilter方法使用最多,过滤器的业务基本都是围绕着这个方法展开的。

2.2.3 doFilter方法

doFilter方法的默认参数中,servletRequest和servletResponse不必多说,是当前请求的请求对象和返回对象

filterChain是过滤器链,暂时可以理解为由多个filter组成的一个链子,责任链设计模式的体现。

在当前过滤器执行完之后,如果放行,则调用filterChain的doFilter方法,执行下一个过滤器的逻辑,这里需要传入 servletRequest和servletResponse对象,我们可以将处理后的这两个对象传进去实现业务增强。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值