广告位联系
返回顶部
分享到

Springboot工程中使用filter过程介绍

java 来源:互联网搜集 作者:秩名 发布时间:2020-03-07 20:04:50 人浏览
摘要

一、什么是filter 过滤器实际上就是用来对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 。 filter可以在请求到达servlet前或者请求完成响应后进行后续的处理。 二

一、什么是filter

过滤器实际上就是用来对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 。

filter可以在请求到达servlet前或者请求完成响应后进行后续的处理。

二、在springboot工程中使用filter

创建一个filter,并使用注解配置该filter的名称和拦截路径等属性

 
@WebFilter(filterName = "AFilter",urlPatterns = "/*")
public class AFilter implements Filter {
  public void destroy() {
  }

  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    System.out.println("AFilter 开始执行");
    chain.doFilter(req, resp);
    System.out.println("AFilter 执行完成");
  }

  public void init(FilterConfig config) throws ServletException {

  }

}
 

上面的代码在doFilter方法中写该过滤器的具体执行逻辑,chain.doFilter用来把请求交给下一个过滤器或者servlet。

在启动类上使用注解@ServletComponentScan来扫描自定义的过滤器

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

这样自定义的过滤器就会被扫描到,就可以起作用。

三、过滤器的执行顺序

如果项目中配置了多个过滤器,并且使用的是注解配置,请求到来时过滤器名称字母顺序靠前的过滤器会先执行;给客户端返回响应时过滤器的执行顺序和请求时的相反。

四、注意

使用以上这种方式来加载自定义过滤器时,不能自定义过滤器的执行顺序,只能通过限定类名顺序来达到目的。

五、使用FilterRegistrationBean 来注册过滤器

当需要自定义过滤器的执行顺序时,可以使用FilterRegistrationBean来实现。

先创建一个过滤器,比如上边的AFilter.java,不再需要注解@WebFilter,

再启动类或者配置类中注入一个如下的bean

 
@Bean
  public FilterRegistrationBean registrationBean1(){
    FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
    filterRegistrationBean.setFilter(new AFilter());
    filterRegistrationBean.addUrlPatterns("/*");
    filterRegistrationBean.setOrder(2);
    return filterRegistrationBean;
  }
 

使用这种方式,创建一个filterRegistrationBean对象,再设置其相关属性,可以通过order属性来设置过滤器的执行顺序,order值越小表示过滤器的优先级越高,会先执行。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.cnblogs.com/chengxuxiaoyuan/p/12431010.html
相关文章
  • SpringBoot自定义错误处理逻辑介绍

    SpringBoot自定义错误处理逻辑介绍
    1. 自定义错误页面 将自定义错误页面放在 templates 的 error 文件夹下,SpringBoot 精确匹配错误信息,使用 4xx.html 或者 5xx.html 页面可以打印错误
  • Java实现手写一个线程池的代码

    Java实现手写一个线程池的代码
    线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个知识点,那么大家知道它的实现原理和
  • Java实现断点续传功能的代码

    Java实现断点续传功能的代码
    题目实现:网络资源的断点续传功能。 二、解题思路 获取要下载的资源网址 显示网络资源的大小 上次读取到的字节位置以及未读取的字节
  • 你可知HashMap为什么是线程不安全的
    HashMap 的线程不安全 HashMap 的线程不安全主要体现在下面两个方面 在 jdk 1.7 中,当并发执行扩容操作时会造成环形链和数据丢失的情况 在
  • ArrayList的动态扩容机制的介绍

    ArrayList的动态扩容机制的介绍
    对于 ArrayList 的动态扩容机制想必大家都听说过,之前的文章中也谈到过,不过由于时间久远,早已忘却。 所以利用这篇文章做做笔记,加
  • JVM基础之字节码的增强技术介绍

    JVM基础之字节码的增强技术介绍
    字节码增强技术 在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字
  • Java中的字节码增强技术

    Java中的字节码增强技术
    1.字节码增强技术 字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。 参考地址 2.常见技术 技术分类 类
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现
    Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射
  • Java C++算法题解leetcode801使序列递增的最小交换次

    Java C++算法题解leetcode801使序列递增的最小交换次
    题目要求 思路:状态机DP 实现一:状态机 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int minSwap(int[] nums1, int[] nums2) { int n
  • Mybatis结果集映射与生命周期介绍

    Mybatis结果集映射与生命周期介绍
    一、ResultMap结果集映射 1、设计思想 对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了 2、resultMap的应用场
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计