SpringBoot集成之过滤器
在开发过程中,我们通常需要过滤一些请求,如访问某个接口判断登陆是否验证等。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集成之过滤器相关推荐
- SpringBoot集成Spring Security —— 第二章自动登录
文章目录 一.修改login.html 二.两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现 三.运行程序 在上一章:SpringBoot集成S ...
- SpringBoot集成Spring Security(一)登录注销
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! SpringBoot集成Spring Security(二)注册 .密码加密.修改密码 写在前面 Spring S ...
- 项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录
文章目录 springboot集成lomback.xml 描述 在yml中定义的一些配置信息 创建logback-spring.xml文件 logback-spring.xml配置如下: **log4 ...
- SpringBoot集成Spring Security(2)——自动登录
在上一章:SpringBoot集成Spring Security(1)--入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html 二.两种实现方式 2 ...
- SpringBoot集成gRPC微服务工程搭建实践
前言 本文将使用Maven.gRPC.Protocol buffers.Docker.Envoy等工具构建一个简单微服务工程,笔者所使用的示例工程是以前写的一个Java后端工程,因为最近都在 学习微服 ...
- SpringBoot集成Swagger2自动生成友好的RestApi测试页面及文档
springBoot集成swagger2 水煮鱼又失败了 https://www.jianshu.com/p/002ce2f26103 1 背景 springBoot作为微服务首选框架,为其他服务提供 ...
- SpringBoot集成权限认证框架(Sa-Token)
SpringBoot集成权限认证框架(Sa-Token) 介绍 身份验证又称"验证"."鉴权",是指通过一定的手段,完成对用户身份的确认. 身份验证的目的是确认 ...
- springboot集成springSecurity,jwt实现前后端分离
** ## springboot集成springSecurity,jwt实现授权,查看权限,获取用户信息:] 简单的springsecurity授权登录校验我就暂时不写了,博客太多了: 第一步:还是导 ...
- SpringBoot集成Mybatis-Plus、Druid(SQL监控)
1.创建springboot项目,先实现mybatis-plus.druid 2.pom文件引入 <dependency><groupId>org.springframewor ...
最新文章
- 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
- centos ipsec tunnel 配置
- 微软 word转换pdf_如何将行转换为Microsoft Word表中的列
- [vue] `<template></template>`有什么用?
- BootStrap笔记-信息提示框的使用
- 狼道:强者的成人礼(第2版)
- python 当前目录_Python中的搜索路径顺序
- Hibernate 主键策略
- linux引导界面含义,Linux引导时输入特殊信息的含义的方法
- 万稞pw80线切割编程软件_常用 CNC编程软件
- 数学建模:Malthus人口模型
- matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
- Python学习:Python分析中国人口(一)爬取数据
- DC中保存ddc格式文件(亲测有效!)save the unmapped design in ddc format
- 树莓派自动饮水机编程示例
- 待看 我在赶集网的两个月
- 电视机体感游戏大盘点
- 物联网方面用哪种计算机语言,物联网学习及理解 - 编程语言
- 数据标注公司标注员是做什么的?有发展前景么?
- C\C++真桌面贪吃蛇,桌面操控,有音乐音效“详解”
热门文章
- saveOrUpdate Transaction silently rolled back because it has been marked as rollback-only
- font-face 自定义字体
- 1w存银行一年多少利息_100万存银行,一年利息有多少?
- CodeForces 13A - Numbers
- 荐读 | 分享交易员的书单,向名家请教交易之道,交易精彩无比
- UESTC 2018 Summer Training #4 Div.2
- js 进一法取正、四舍五入法取正、舍去法取正
- 程序员斗图专用表情包,做技术群里最靓的仔!
- 自动释放池 ARC机制
- 蓝桥杯 Cowboys