博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot-interceptor(拦截器)
阅读量:4161 次
发布时间:2019-05-26

本文共 3364 字,大约阅读时间需要 11 分钟。

第一步:pom.xml 引入依赖:

 
4.0.0
com.szt
interceptordemo
0.0.1-SNAPSHOT
jar
interceptordemo
my Interceptor Demo
org.springframework.boot
spring-boot-starter-parent
1.5.8.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework
spring-webmvc
4.3.10.RELEASE
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
需要 引入 spring-webmvc spring-boot-starter-web第二步:创建一个实现 HandlerInterceptor 的类/** * Created by sunzhitao on 2018/6/12. * 1. preHandle 表示方法请求前的处理,若其返回值为FALSE,就中断请求目标方法了,只有返回值为TRUE时才继续执行方法内容。 * 2. postHandle 是在目标方法执行完之后执行的。 */public class WebInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(" WebInterceptor | preHandle ================"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(" WebInterceptor | postHandle ================"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(" WebInterceptor | afterCompletion ================"); }}
第三步:注册拦截器。创建一个配置类并继承 WebMvcConfigurerAdapter。重写 addInterceptors 方法。

@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {    public void  addInterceptors(InterceptorRegistry registry){        registry.addInterceptor(new WebInterceptor()).addPathPatterns("/test/**").excludePathPatterns("/exclude/**");    }

第四步:编写普通的controller 和方法。

第三步,TestController 的路径是要走拦截器的,ExcuteController的不走拦截器(排除了)

@RestController@RequestMapping("/test")public class TestController {    @RequestMapping("/interceptor")    public String interceptor(ModelMap model){        model.addAttribute("a",111);        System.out.println("**************  TestController | interceptor *******************");        return "interceptor";    }}
@RestController@RequestMapping("/exclude")public class ExcuteController {    @RequestMapping("/test")    public String excludeTest(){        System.out.println(" ************ ExcuteController | test ");        return "exclude";    }}

两个方法都执行一遍,发现TestController里面走了拦截器 ,excludeTest没有走

结果:

你可能感兴趣的文章
iPhone为什么比Android好
查看>>
小程序的今天就是微信指数的明天
查看>>
从互联网到人工智能,BAT这七年来到底做了什么
查看>>
2012年十大科技趋势:Siri将震惊世界
查看>>
2017(第十届)中国绿公司年会马云演讲
查看>>
李彦宏:睡不着觉不是因对手
查看>>
从手Q与微信之争,看腾讯内在的真实矛盾与战略
查看>>
移动互联网的七宗败案
查看>>
互联网十大失败案
查看>>
小米颓势已现,生死劫命悬手机
查看>>
三大隐忧 三星未来路在何方?
查看>>
linux下各种进制转化最简单的的命令行
查看>>
结构体和联合体
查看>>
ACM(Association for Computing Machinery )组织的详细介绍
查看>>
unix高级编程之-命令行参数(实践一)
查看>>
无线网络加密方式对比 .
查看>>
linux中cat命令使用详解
查看>>
Static 作用详述
查看>>
透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)
查看>>
透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)
查看>>