玩转springboot:实现springboot自定义拦截器
一、前言
在javaee中,我们经常使用filter来做拦截器,后来有了springmvc,我们使用HandlerInterceptor
进行拦截,springmvc的拦截器查看这篇文章,现在有了springboot,我们使用HandlerInterceptor进行拦截,但是我们不用xml的配置,省了很多的事情。
二、springboot拦截器使用
1、设置拦截器
/*** @author 欧阳思海* @date 2018/7/26 10:08* 拦截器测试*/
public class TestInterceptor implements HandlerInterceptor {//目标方法执行之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {if(true){System.out.println("已经进行拦截了。。。。。。。。");return false;}return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Objecthandler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handler, Exception ex) throws Exception {}}
这里如果拦截成功,会输出:
已经进行拦截了。。。。。。。。
2、拦截器注册
在springmvc的时候,我们这里使用的是xml进行配置的,但是,在springboot中,我们使用java配置,具体用法如下:
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//@EnableWebMvc 不要接管SpringMVC
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {//注册拦截器2@Overridepublic void addInterceptors(InterceptorRegistry registry) {/*addPathPatterns 用于添加拦截规则excludePathPatterns 用户排除拦截*/registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**").excludePathPatterns("/index.html", "/", "/user/login");}
}
解释:
上面拦截器的注册,首先,我们使用addPathPatterns("/**")
添加了所有的都拦截。
然后,在使用excludePathPatterns("/index.html", "/", "/user/login")
将index.html和/user/login两个url设置不拦截。
注意注册时的区别
registry.addInterceptor(getInterfaceAuthCheckInterceptor()).addPathPatterns("/api/**")
:这种方式无论什么情况都可以
registry.addInterceptor(new InterfaceAuthCheckInterceptor()).addPathPatterns("/api/**")
:这种情况时,自定义的interceptor中不能注入其他内容,比如redis或者其他service,如果要注入,必须使用上面这种方法
下面我们写个controller进行测试。
3、controller测试
/*** @author 欧阳思海* @date 2018/7/25 9:57*/
@Controller
public class HelloworldController {@ResponseBody@RequestMapping("/hello")public String hello(){return "Hello World!";}
}
这里我们在浏览器输入:http://localhost:8080/test
后台输出结果:
已经进行拦截了。。。。。。。。
拦截器使用完毕!
玩转springboot:实现springboot自定义拦截器相关推荐
- SpringBoot中自定义拦截器
场景 自定义拦截器,通过继承WebMvcConfigureAdapter然后重写父类中的方法进行扩展. 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZH ...
- 【学习】SpringBoot之自定义拦截器
/*** 自定义拦截器**/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapter ...
- springboot+shiro自定义拦截器互踢问题
shiro自定义拦截器继承AccessControllerFilter,实现session互踢机制. 应用场景: 我们经常会有用到,当A 用户在北京登录 ,然后A用户在天津再登录 ,要踢出北京登录的状 ...
- SpringBoot从零单排 ------ 拦截器的使用
在项目开发中我们常常需要对请求进行验证,如登录校验.权限验证.防止重复提交等等,通过拦截器来过滤请求.自定义一个拦截器需要实现HandlerInterceptor接口. 代码如下: import or ...
- SpringBoot中文件下载、拦截器、war包部署、jar包部署
3. SpringBoot中文件下载 将可以被下载资源放在磁盘的 D:\springbootcodes\springboot_day6\download 路径 这里我们使用jsp开发 引入依赖使tom ...
- 在SpringBoot项目中整合拦截器
拦截器在Web系统中非常常见,对于某些全局统一的操作,我们可以把它提取到拦截器中实现.总结起来,拦截器大致有以下几种使用场景: 1.权限检查:如登录检测,进入处理程序检测用户是否登录,如果没有,则直接 ...
- springBoot之过滤器和拦截器的使用
在springBoot中,过滤器和拦截器的使用. 过滤器 概述 过滤器是什么? 简单的来说,过滤器就是过滤的作用,在web开发中过滤一些我们指定的url. 过滤器主要做什么? 过滤掉一些不需要的东西, ...
- springboot中配置了拦截器后,拦截器无效的解决方案之一
springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...
- springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能
在spring-boot-2.2.5中对MVC自动配置类进行的更改,之前的WebMvcConfigurerAdapter类声明为过时的,现在进行自定义扩展需要实现WebMvcConfigurer类重写 ...
- Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...
最新文章
- web前端【第九篇】JS的DOM对象三
- 鸟哥的Linux私房菜(基础篇)-第四章、安装 CentOS 5.x 与多重开机小技巧(三.1. 本练习机的规划--尤其是分割参数)
- mac安装nvm及换源及node安装切换
- 软件体系结构设计文档_一个java架构师是如何设计出一个好的架构的
- php mysql登陆页面完整代码_求助:PHP实现登陆注册的代码是什么啊(主要是数据库那块)?...
- 做骨龄检测_小柚熊:骨龄测试最佳年龄
- 理解java虚拟机有什么用_java虚拟机的作用是什么?我们为什么要用虚拟机?
- 不用写代码的可视化大屏,一口气把工具和方法都教给你
- 17 款可视化工具,让你的数据更美观!
- EasyPR如何添加绿牌C++版
- mac终端链接阿里云服务器
- 游戏服务器架构,配置
- 树莓派RaspberryPi Zero W 快速安装tips
- Matlab c2d离散用法
- 微信小程序动态倒计时
- 安卓系列之 kotlin 项目实战--基础 demo
- 【算法导论】生日悖论
- 向量法计算多边形面积
- 更改mui框架默认弹框样式,位置
- 深度学习网络结构图绘制工具及方法
热门文章
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?...
- 我想用keil5生成BIN文件,可是安装目录下找不到fromelf.exe
- 用SVC模型完成对手写数字的分类
- Keras实现seq2seq案例代码:Bi-LSTM
- C++ Primer 5th笔记(chap 13 拷贝控制)移动构造和移动赋值
- sql注入——day02
- 初识 java(简单易懂入门篇)
- RabbitMQ面试题及答案
- c/c++ typedef定义函数指针(Hook前奏2)
- ubuntu: Authentication failure的解决办法