SpringBoot2.1中添加过滤器配置
1:构造一个实现 Filter 接口的过滤器,并在类上添加@component注释:
notice1:若不添加,则需在spring中注入该bean,不然会报错。
package com.dev.filter; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*; /**
* Created by zgq7 on 2019/6/6.
*/
@Component
public class BaseFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); @Override
public void init(FilterConfig filterConfig) throws ServletException {
Map<Object, Object> map = new LinkedHashMap<>(10);
map.put("filterName", filterConfig.getFilterName()); log.info("filter config indclude :{}", map);
} @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse; String uri = request.getRequestURI(); Map<Object, Object> map = new HashMap<>(10);
map.put("url", request.getRequestURL());
map.put("uri", uri);
map.put("requestType", request.getMethod());
log.info("{}", map); filterChain.doFilter(request, response);
} @Override
public void destroy() {
log.info("filter destroyed ...");
}
}
2:编写过滤器配置类,并在类上添加@Configuration注释,告诉spring声明这是一个配置类:
package com.dev.config; import com.dev.filter.BaseFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import java.util.*;
/**
* Created by zgq7 on 2019/6/6.
*/
@Configuration
public class SpringConfig { @Bean
public FilterRegistrationBean<BaseFilter> filterFilterRegistrationBean(BaseFilter baseFilter) {
FilterRegistrationBean<BaseFilter> filterFilterRegistrationBean = new FilterRegistrationBean<>(); //拦截路径配置
List<String> uriList = new ArrayList<>(10);
uriList.add("/dev/*"); filterFilterRegistrationBean.setFilter(baseFilter);
filterFilterRegistrationBean.setEnabled(true);
filterFilterRegistrationBean.setUrlPatterns(uriList);
filterFilterRegistrationBean.setName("baseFilter");
filterFilterRegistrationBean.setOrder(1); return filterFilterRegistrationBean;
} }
3:编写一个controller进行测试:
package com.dev.controller; import com.google.common.collect.ImmutableMap;
import org.springframework.web.bind.annotation.*; import java.util.Map; /**
* Created by zgq7 on 2019/6/6.
*/
@RestController
@RequestMapping(value = "/dev")
public class BaseController { @GetMapping(value = "")
public Map<Object, Object> get() {
return ImmutableMap.of("code", "get");
} @PutMapping(value = "t")
public Map<Object, Object> t() {
return ImmutableMap.of("code", "put");
} @PostMapping(value = "s")
public Map<Object, Object> s() {
return ImmutableMap.of("code", "post");
} }
4:使用psotMan进行测试:
5:控制台如下:
输出该日志是因为过滤器拦截到了 /dev 路径下的请求才输出的。可自行测试哦~~~
SpringBoot2.1中添加过滤器配置的更多相关文章
- 在web.Config文件中添加数据库连接配置
新建一个网站,打开web.config文件,在connectionString配置节点添加add节点进行数据库进行数据库连接配置代码如下: <connectionStrings> < ...
- vue中添加less配置,用于计算div高度
需求:左边垂直的菜单栏高度设置为 100% - 导航栏的高度(3.6rem) 首先,从vue-cli脚手架里的安装的webpack模板中并没有less的依赖配置,得自己手动添加安装 安装命令::npm ...
- AngularJS 表达式中添加过滤器实例
过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中 历练实例: <!DOCTYPE html><html><head><meta http-equiv ...
- jsp中添加过滤器,实现校验用户身份
我现在需要实现一个功能,就是用户登录前不允许访问系统,我使用的是jsp的过滤器来实现的. 先把filter过滤器的代码粘出来: package com.day8.filter; import java ...
- 解决springmvc 中文post请求乱码的过滤器配置
在web.xml中添加如下配置 <!-- 过滤器 解决post乱码 --> <filter> <filter-name>characterEncodingFilte ...
- asp.net中web.config配置节点大全详解
最近网上找了一些关于Web.config配置节点的文章,发现很多都写的都比较零散,而且很少有说明各个配置节点的作用和用法.搜索了一下发现有一篇写的不错,这里引用一下 原文地址 http://www.c ...
- asp.net中web.config配置节点大全详解【转】
web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web ...
- (转)如何在maven的pom.xml中添加本地jar包
1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...
- (转)如何在maven的pom.xml中添加本地jar包
转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...
随机推荐
- 基于线段树的RMQ
RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s.t(s<=t<=n),返回区间[s,t]中的最值. 基于线段树的方法实 ...
- Codeforces Round #644 (Div. 3)
比赛链接:https://codeforces.com/contest/1360 A - Minimal Square 题意 计算能包含两个 $a \times b$ 矩形的最小正方形的面积. 题解 ...
- requests -- Python
使用requests方法后,会返回一个response对象,其存储了服务器响应的内容:如下r表示get请求后的响应对象r = requests.get('http://hz.58.com/sale.s ...
- CF1397-C. Multiples of Length
CF1397-C. Multiples of Length 题意: 给出一个长度为\(n\)的序列,让你进行下面操作三次使得整个序列全部变为\(0\): 在序列中选中一段序列\((l, r)\), ...
- MySQL 启动流程及配置管理
目录 MySQL 启动关闭流程 启动数据库 关闭数据库 MySQL 配置管理 预编译阶段 配置文件 命令行 MySQL 配置文件 配置文件的位置和优先级 配置文件的优先级测试 配置文件的生效顺序 配置 ...
- python 表达式
运算符 参考 https://www.runoob.com/python3/python3-basic-operators.html & https://www.runoob.com/pyth ...
- Python 相关
循环使用迭代器 Python中使用for循环时,内置容器的默认循环都是有迭代器的.使用迭代器每次只会读出一小部分到内存,不断往后next. 通常建议在没有必要的情况下不使用for key,value ...
- Netty (一) IO 基础篇
Java IO 演进之路 1.1 必须明白的几个概念 1.1.1 阻塞(Block)和非阻塞(Non-Block) 阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准 ...
- μC/OS-III---I笔记9---任务等待多个内核对象和任务内建信号量与消息队列
在一个任务等待多个内核对象在之前,信号量和消息队列的发布过程中都有等待多个内核对象判断的函数,所谓任务等待多个内核对象顾名思义就是一任务同时等待多个内核对象而被挂起,在USOC-III中一个任务等待多 ...
- 后Low Code时代:聚焦和突破
很多人都不想被贴上标签,我曾经也一样.觉得青春不能被定义,人也不能被分类.但随着学习和工作的变迁,慢慢开始发现标签也是一种名片效应. 比如一个做汽车销售的朋友,他就对BMW的车型非常熟悉,可以说是懂车 ...