玩转 SpringBoot 2 快速整合 Filter
概述
SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter 。但是我们可以通过 JavaConfig(@Configuration +@Bean)方式进行配置。通过FilterRegistrationBean 将自定义 Filter 添加到 SpringBoot 的过滤链中。
实战操作
实战操作通过定义一个拦截所有访问项目的URL的 Filter来进行演示的。
首先定义一个统一访问 URL 拦截的 Filter。代码如下:
public class UrlFilter implements Filter {
private Logger log = LoggerFactory.getLogger(UrlFilter.class);
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestURI = httpServletRequest.getRequestURI();
StringBuffer requestURL = httpServletRequest.getRequestURL();
log.info("requestURI:" +requestURI+" "+"requestURL:"+requestURL);
chain.doFilter(httpServletRequest, response);
}
}
通过 javaConfig方式配置 SpringBoot 过滤链类 FilterRegistrationBean,具体代码如下:
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new UrlFilter());
List<String> urlList = new ArrayList<String>();
urlList.add("/*");
registration.setUrlPatterns(urlList);
registration.setName("UrlFilter");
registration.setOrder(1);
return registration;
}
}
FilterRegistrationBean 中方法介绍:
registration.setFilter(Filter filter):设置我们自定义Filter对象。
registration.setUrlPatterns(Collection urlPatterns):设置自定义Filter需要拦截的URL的集合。
registration.setName(String name): 设置自定义Filter名称。
registration.setOrder(int order):设置自定义Filter拦截顺序。
测试
启动 SpirngBoot 项目并通过游览器访问我们的项目下的 index.html。


玩转 SpringBoot 2 快速整合 Filter的更多相关文章
- 玩转 SpringBoot 2 快速整合拦截器
概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器 HandlerInterceptor.使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInte ...
- 玩转 SpringBoot 2 快速整合 | JSP 篇
前言 JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面. 作为Java技术系列的一部分,JSP技术可以快速开发独 ...
- 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)
概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...
- 玩转 SpringBoot 2 快速整合 | FreeMarker篇
FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...
- 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇
前言 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用 ...
- 玩转 SpringBoot 2 之整合 JWT 下篇
前言 在<玩转 SpringBoot 2 之整合 JWT 上篇> 中介绍了关于 JWT 相关概念和JWT 基本使用的操作方式.本文为 SpringBoot 整合 JWT 的下篇,通过解决 ...
- 使用Springboot + Gradle快速整合Mybatis-Plus
使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...
- 玩转 SpringBoot 2 快速搭建 | RESTful Api 篇
概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...
- 玩转 SpringBoot 2 之整合 JWT 上篇
前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合 JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术, ...
随机推荐
- Wooden Signs Gym - 101128E (DP)
Problem E: Wooden Signs \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出一个\(n\),接下来\(n+1\)个数, ...
- luogu_4287:双倍回文
洛谷4287:双倍回文 前言: 参考博文: https://www.cnblogs.com/Vscoder/p/10498625.html 题目描述: 记字符串\(w\)的倒置为\(w^R\).例如\ ...
- 常用方法 DataTable转换为Entitys
备注:摘自网上 有附地址 public static List<T> DataTableToEntities<T>(this DataTable dt) where T : c ...
- bzoj1935: [Shoi2007]Tree 园丁的烦恼lowbit 离散化
链接 bzoj 最好不要去luogu,数据太水 思路 一个询问转化成四个矩阵,求起点\((0,0)到(x,y)\)的矩阵 离线处理,离散化掉y,x不用离散. 一行一行的求,每次处理完一行之后下一行的贡 ...
- luogu P3799 妖梦拼木棒
二次联通门 : luogu P3799 妖梦拼木棒 /* luogu P3799 妖梦拼木棒 用一个桶存下所有的木棒 美剧两根短的木棒长度 后随便乘一乘就 好了.. */ #include <a ...
- yarn和npm的对比,以及项目中使用方式
相比npm 的优点 1.npm安装是串行,而yarn是并行,速度大大提升 2.已经下载过的包会被缓存,无需重复下载,更关键的是,支持离线安装 3.精准的版本控制,加上验证每个包的完整性,保证每次安装的 ...
- pycharm配置默认代码和注释模板
有人问,在pycharm新建python文件时,文件开头的注释每次都要重复写,能不能配置成模板?其实pycharm本身自带此功能 在pycharm菜单栏找File -> settings -&g ...
- python 获取文件运行路径
import os print(os.getcwd()) print("/".join(os.path.dirname(os.path.abspath(__file__)).spl ...
- Docker容器CPU、memory资源限制
背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...
- 向量召回 vearch
开源向量召回工具 https://github.com/vearch/vearch 架构