SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
一、拦截器简介
1、拦截器定义
拦截器,请求的接口被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 拦截器主要用来按照指定规则拒绝请求。
2、拦截器中应用
Token令牌验证 请求数据校验 用户权限校验 放行指定接口
二、SpringBoot2.0拦截器用法
1、编写两个拦截器
自定义类实现HandlerInterceptor接口
1)OneInterceptor 拦截器
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 拦截器一 */ public class OneInterceptor implements HandlerInterceptor { private static final Logger LOGGER = LoggerFactory.getLogger(OneInterceptor.class.getName()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { String url =String.valueOf(request.getRequestURL()) ; LOGGER.info("1、url=="+url); // 放开拦截 return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { LOGGER.info("1、postHandle"); } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { LOGGER.info("1、afterCompletion"); } }
2)TwoInterceptor 拦截器
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 拦截器二 */ public class TwoInterceptor implements HandlerInterceptor { private static final Logger LOGGER = LoggerFactory.getLogger(TwoInterceptor.class.getName()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { String url =String.valueOf(request.getRequestURL()) ; LOGGER.info("2、url=="+url); // 放开拦截 return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { LOGGER.info("2、postHandle"); } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { LOGGER.info("2、afterCompletion"); } }
2、Web配置文件中注入拦截器
import com.boot.intercept.intercept.OneInterceptor; import com.boot.intercept.intercept.TwoInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * Web配置文件 */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { // 拦截所有路径 // 注册自定义两个拦截器 registry.addInterceptor(new OneInterceptor()).addPathPatterns("/**"); registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/**"); } }
3、编写测试接口
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class InterceptController { @RequestMapping("/reqUrl") public String reqUrl (){ return "success" ; } }
4、访问测试接口
日志输出内容如下
intercept.OneInterceptor : 1、url==http://127.0.0.1:8005/reqUrl intercept.TwoInterceptor : 2、url==http://127.0.0.1:8005/reqUrl intercept.TwoInterceptor : 2、postHandle intercept.OneInterceptor : 1、postHandle intercept.TwoInterceptor : 2、afterCompletion intercept.OneInterceptor : 1、afterCompletionla
拦截器的拦截顺序,是按照Web配置文件中注入拦截器的顺序执行的。
三、源代码地址
GitHub地址:知了一笑 https://github.com/cicadasmile 码云地址:知了一笑 https://gitee.com/cicadasmile

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpringBoot2.0 基础案例(04):定时任务和异步任务的使用方式
一、定时任务 1、基本概念 按照指定时间执行的程序。 2、使用场景 数据分析 数据清理 系统服务监控 二、同步和异步 1、基本概念 同步调用程序按照代码顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用顺序执行时,不等待异步调用的代码块返回结果就执行后面的程序。 2、使用场景 短信通知 邮件发送 批量数据入缓存 三、SpringBoot2.0使用定时器 1、定时器执行规则注解 @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行 @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行 @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次 @Scheduled(cron="/5") :通过cron表达式定义规则 2、定义时间打印定时器 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spr...
- 下一篇
5分钟让你了解 ZooKeeper 的功能和原理
5分钟让你了解 ZooKeeper 的功能和原理 一 .Zookeeper功能简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。 分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协 调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列 等功能。 二 . ZooKeeper基本概念 本节将介绍 ZooKeeper 的几个核心概念 因此有必要预先了解这些概念。 集群角色 一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。 ZooKeeper 配置很简单,每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。 zoo.cfg配置文件示例 在装有 ZooKeeper 的机器的终端执行 zookeeper-server status 可以看当前节点的 ZooKeeper是什么角色(Leade...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7