SpringBoot 的拦截器

Posted cb1186512739

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 的拦截器相关的知识,希望对你有一定的参考价值。

首先注册我们要有完整的一个可以开始的开发环境

技术图片

先自己创建一个配置类 InterceptorConfig, 实现springboot自带的拦截器接口 WebMvcConfigurer.

 1 package com.example.demo.TestInterceptor;
 2 
 3 import org.springframework.context.annotation.Configuration;
 4 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 5 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 6 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 7 
 8 
 9 @Configuration
10 public class InterceptorConfig implements WebMvcConfigurer 
11 
12 
13     @Override //用来注册拦截器,我们自己写好的拦截器需要在这里注册才能生效
14     public void addInterceptors(InterceptorRegistry registry) 
15 
16         // addPathPatterns("/**") 表示拦截所有的请求,
17         // excludePathPatterns("/user", "/register") 表示除了登陆与注册之外,因为登陆注册不需要登陆也可以访问
18         registry.addInterceptor(new LogCostInterceptor()).addPathPatterns("/**").excludePathPatterns("/login", "/user");
19     
20 
21     @Override  //用来配置静态资源,如html,js等前端页面资源
22     public void addResourceHandlers(ResourceHandlerRegistry registry) 
23 
24     
25 

 


 

 自己写及配置自己的业务需求层面

 1 package com.example.demo.TestInterceptor;
 2 
 3 import org.springframework.web.servlet.HandlerInterceptor;
 4 import org.springframework.web.servlet.ModelAndView;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 
10 public class LogCostInterceptor implements HandlerInterceptor 
11     @Override
12     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception 
13         System.err.println("preHandle是请求执行(bool)");  //preHandle是请求执行前执行的
14         return true;//如果这里是fale就是不会去执行下面的方法
15        // 在这里可以完全的执行和实现相应的业务 流程,如登入模块等   
17     
18 
19     @Override
20     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception 
21         System.err.println("postHandle是请求执行(void)");  //postHandler是请求结束执行的,但只有preHandle方法返回true的时候才会执行
22     
23 
24     @Override
25     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception 
26         System.err.println("afterCompletion是请求执行(afterCompletion)");//afterCompletion是视图渲染完成后才执行,同样需要preHandle返回true,该方法通常用于清理资源等工作
27     
28 

 

以上是关于SpringBoot 的拦截器的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot.12.SpringBoot中的拦截器

SpringBoot.12.SpringBoot中的拦截器

SpringBoot.12.SpringBoot中的拦截器

SpringBoot.12.SpringBoot中的拦截器

SpringBoot——SpringBoot中使用拦截器

Springboot第三章 SpringBoot 和 web 组件