在开发过程中,我们通常需要过滤一些请求,如访问某个接口判断登陆是否验证等。springboot下过滤器有两种实现方式

1.注解方式

使用该过滤器的时候需添加@WebFilter注解,另外还需要@Component注解,将该类作为组件,注入spring容器中。

package com.example.demo.filter;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;/*** Created by linjiaming*/
@Slf4j
@Component
@WebFilter(value = "/hello")
public class HelloFilter2 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {log.info("进入到过滤器2啦");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {}
}

值得一提的是,该过滤器的日志打印方式是lombok插件自带的注解@Slf4j。该插件的功能很强大,可自动为实体类生成get,set方法等。使用时需先下载对应插件,以及在pom文件里引入对应的依赖

2.bean注入方式

首先自定义filter,然后在springboot启动类下配置一个过滤的bean,若不在springboot的启动类下配置,在其他的类上使用时,需在类上写上@Configuration,标志这个类是一个配置类。springboot启动类注解@springbootApplication内部含有该注解,所以无需配置。

package com.example.demo.filter;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import lombok.extern.slf4j.Slf4j;/*** Created by linjiaming*/
@Slf4j
public class HelloFilter1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {log.info("进入到过滤器1啦");//放行至下一个过滤器filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {}
}
package com.example.demo;import com.example.demo.filter.HelloFilter1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Beanpublic FilterRegistrationBean registrationBean(){FilterRegistrationBean filter = new FilterRegistrationBean(new HelloFilter1());filter.addUrlPatterns("/hello");//多个过滤器时执行顺序//filter.setOrder(1);return filter;}
}

SpringBoot集成之过滤器相关推荐

  1. SpringBoot集成Spring Security —— 第二章自动登录

    文章目录 一.修改login.html 二.两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现 三.运行程序 在上一章:SpringBoot集成S ...

  2. SpringBoot集成Spring Security(一)登录注销

    同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! SpringBoot集成Spring Security(二)注册 .密码加密.修改密码 写在前面 Spring S ...

  3. 项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录

    文章目录 springboot集成lomback.xml 描述 在yml中定义的一些配置信息 创建logback-spring.xml文件 logback-spring.xml配置如下: **log4 ...

  4. SpringBoot集成Spring Security(2)——自动登录

    在上一章:SpringBoot集成Spring Security(1)--入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html 二.两种实现方式 2 ...

  5. SpringBoot集成gRPC微服务工程搭建实践

    前言 本文将使用Maven.gRPC.Protocol buffers.Docker.Envoy等工具构建一个简单微服务工程,笔者所使用的示例工程是以前写的一个Java后端工程,因为最近都在 学习微服 ...

  6. SpringBoot集成Swagger2自动生成友好的RestApi测试页面及文档

    springBoot集成swagger2 水煮鱼又失败了 https://www.jianshu.com/p/002ce2f26103 1 背景 springBoot作为微服务首选框架,为其他服务提供 ...

  7. SpringBoot集成权限认证框架(Sa-Token)

    SpringBoot集成权限认证框架(Sa-Token) 介绍 身份验证又称"验证"."鉴权",是指通过一定的手段,完成对用户身份的确认. 身份验证的目的是确认 ...

  8. springboot集成springSecurity,jwt实现前后端分离

    ** ## springboot集成springSecurity,jwt实现授权,查看权限,获取用户信息:] 简单的springsecurity授权登录校验我就暂时不写了,博客太多了: 第一步:还是导 ...

  9. SpringBoot集成Mybatis-Plus、Druid(SQL监控)

    1.创建springboot项目,先实现mybatis-plus.druid 2.pom文件引入 <dependency><groupId>org.springframewor ...

最新文章

  1. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
  2. centos ipsec tunnel 配置
  3. 微软 word转换pdf_如何将行转换为Microsoft Word表中的列
  4. [vue] `<template></template>`有什么用?
  5. BootStrap笔记-信息提示框的使用
  6. 狼道:强者的成人礼(第2版)
  7. python 当前目录_Python中的搜索路径顺序
  8. Hibernate 主键策略
  9. linux引导界面含义,Linux引导时输入特殊信息的含义的方法
  10. 万稞pw80线切割编程软件_常用 CNC编程软件
  11. 数学建模:Malthus人口模型
  12. matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
  13. Python学习:Python分析中国人口(一)爬取数据
  14. DC中保存ddc格式文件(亲测有效!)save the unmapped design in ddc format
  15. 树莓派自动饮水机编程示例
  16. 待看 我在赶集网的两个月
  17. 电视机体感游戏大盘点
  18. 物联网方面用哪种计算机语言,物联网学习及理解 - 编程语言
  19. 数据标注公司标注员是做什么的?有发展前景么?
  20. C\C++真桌面贪吃蛇,桌面操控,有音乐音效“详解”

热门文章

  1. saveOrUpdate Transaction silently rolled back because it has been marked as rollback-only
  2. font-face 自定义字体
  3. 1w存银行一年多少利息_100万存银行,一年利息有多少?
  4. CodeForces 13A - Numbers
  5. 荐读 | 分享交易员的书单,向名家请教交易之道,交易精彩无比
  6. UESTC 2018 Summer Training #4 Div.2
  7. js 进一法取正、四舍五入法取正、舍去法取正
  8. 程序员斗图专用表情包,做技术群里最靓的仔!
  9. 自动释放池 ARC机制
  10. 蓝桥杯 Cowboys