springboot中使用filter过滤器

这篇具有很好参考价值的文章主要介绍了springboot中使用filter过滤器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、filter过滤器的介绍

filter过滤器其实是JavaEE中的规范,JavaWeb中的三大组件是filter过滤器、listener监听器,servlet服务。
过滤器的作用就是把请求拦截下来,从而对请求进行一些特殊操作,比如检验用户是否登录,判断权限,设置编码格式、敏感字符处理等。
image.png
filter过滤器中有三个方法:

package javax.servlet;
public interface Filter {
    /**
     *  servlet 容器在实例化过滤器后只调用一次 init 方法。
	 *	init 方法必须成功完成,然后才会要求筛选器执行任何筛选工作。
     */
    public default void init(FilterConfig filterConfig) throws ServletException {}
    /**
     *doFilter每次由于客户端请求链末端的资源而导致请求/响应对通过链时,容器都会调用筛选器的方法。
	传递给此方法的筛选器链允许筛选器将请求和响应传递给链中的下一个实体。
     */
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException;

        /*由 Web 容器调用,以向筛选器指示它正在停止服务。
        仅当筛选器的 doFilter 方法中的所有线程退出或超时期限过后,才会调用此方法。
        Web 容器调用此方法后,它不会在此筛选器实例上再次调用 doFilter 方法。 
        此方法使筛选器有机会清理正在保留的任何资源(例如,内存、文件句柄、线程),
        并确保任何持久状态与筛选器在内存中的当前状态同步。默认实现是无操作的。*/
    public default void destroy() {}
}

分别是初始化方法init,拦截方法doFilter,销毁方法destroy
当请求路径正好被filter配置的拦截规则拦截时,servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。
filter的生命周期由web容器负责。

二、在spring boot中使用filter

以检验用户石佛偶登录为例:未登录状态下请求服务器端,请求将被拦截;对登录请求以及页面资源加载请求进行放行

1.首先在源码目录中创建一个filter的包,然后创建一个自定义的filter实现Filter接口:
//@@WebFilter(urlPatterns = "/*")表示要拦截的请求,/*表示拦截所有请求
@WebFilter(urlPatterns = "/*")
public class LoginFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
       //将形参servletRequest强制转换为HttpServletRequest类型,以便获取请求的URL地址和请求头
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String requestURI = request.getRequestURI();
        if (requestURI.contains("/login")) {
            //  如果是登录请求直接放行
            filterChain.doFilter(servletRequest, servletResponse);
        } else {
            // 获取请求头中的验证token
            String token = request.getHeader("Authorization");
            try {
                JwtUtil.validateToken(token);//检验token的有效性
            } catch (Exception e) {
                System.out.println("=========token认证失败。");
                return;
            }
            System.out.println("=========token认证成功。");
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }
}
2.让spring boot加载自定义的过滤器

由于spring boot项目默认以jar的方式打包,没有使用web.xml配置文件,所以我们可以通过注解的方式在springboot的主类上加@ServletComponentScan

@ServletComponentScan
@SpringBootApplication
public class TliasItheimaApplication {
    public static void main(String[] args) {
        SpringApplication.run(TliasItheimaApplication.class, args);
    }
}

@ServletComponentScan可以实现对servlet、filter、listener的扫描

使用postman测试接口:
image.png文章来源地址https://www.toymoban.com/news/detail-475068.html

到了这里,关于springboot中使用filter过滤器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 结果过滤器—MVC项目中结果过滤器(Result Filter)使用

    结果过滤器( ResultFilter ),是对执行的Action结果进行处理的一种AOP思想,适用于任何需要直接环绕 View 或格式化处理的逻辑。结果过滤器可以 替换或更改 Action 结果 。在 IActionResult 执行的前后执行,使用它能够控制Action的执行结果,比如:格式化结果等。需要注意的是,它只

    2024年02月12日
    浏览(55)
  • Vue 中过滤器 filter 使用教程

    1.1 过滤器使用的背景    过滤器 提供给我们的一种 数据处理方式 。过滤器功能不是必须要使用的,因为它所实现的功能也能用 计算属性 或者 函数调用 的方式来实现。   例如我们要在页面显示格式化的时间样式,如图所示:下面三种格式化的时间格式都是由 时间戳

    2024年02月07日
    浏览(41)
  • springboot中过滤器@WebFilter的使用以及简单介绍限流算法

    过滤器(Filter)实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理,大致流程如下图 一般情况下,我们针对一些敏感的参数,例如密码、身份证号等,给它加密,防止报文明文

    2024年02月03日
    浏览(37)
  • 【看好了】如何使用fiddler实现手机抓包,Filters过滤器!

    目录 一、Fiddler与其他抓包工具的区别 二、Fiddler的工作原理 三、使用fiddler实现手机抓包 四、Filters过滤器 1、Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都

    2024年02月09日
    浏览(54)
  • Filter 过滤器

    Filter过滤器介绍 这里我们讲解Filter的执行流程,从下图可以大致了解到,当客户端发送请求的时候,会经过过滤器,然后才能到我们的servlet,当我们的servlet处理完请求之后,我们的response还是先经过过滤器才能到达我们的客户端,这里我们进行一个代码的演示,看看具体执

    2024年02月02日
    浏览(46)
  • 认识Filter(过滤器)

    Filter介绍 在计算机编程中,Filter(过滤器)是一种用于对数据流进行处理的软件组件。Filter 的作用是从输入流中获取数据,对其进行处理后再将其写入输出流中。Filter 组件通常用于数据校验、数据转换、数据压缩等方面,以及对网络通信进行处理。在 Web 开发中,Filter 是

    2024年02月02日
    浏览(47)
  • 过滤器Filter

    什么是Filter? Filter表示过滤器,是JavaWeb三大组件(Servlet、FIlter、Listener)之一。 过滤器可以把对资源的请求拦截下来,总而实现一些特殊的功能 使用过滤器后,要想访问web服务器上的资源,必须先经过过滤器,过滤器处理完毕后,才可以访问对应的资源。 过滤器一般完成

    2023年04月12日
    浏览(40)
  • java过滤器(Filter)

    原文链接: java过滤器(Filter – 编程屋 目录 1 过滤器简介 2 Filter详细介绍 3 Filter的用法 3.1 用法1  3.2 用法2 filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器) 作用: 既可以对请求进行拦截,也可以对响应进行处理。 常见场景: 权限检

    2024年02月20日
    浏览(43)
  • [Java]过滤器(Filter)

    一、什么是过滤器 过滤器是Servlet的高级特性之一,是实现Filter接口的Java类! 过滤器的执行流程:   从上面的图我们可以发现,当浏览器发送请求给服务器的时候, 先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。 过滤

    2024年02月11日
    浏览(43)
  • 【SpringBoot】过滤器,监听器,拦截器介绍

    通过两幅图我们可以理解拦截器和过滤器的特点 1、过滤器 过滤器是在请求进入tomcat容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 理解上面这句话我们就可以知道,进入servlet之前,主要是两个参数:ServletRequest,

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包