Spring Boot 拦截器
本文将介绍拦截器的作用和简单的使用方法,会已登录拦截的需求作为例子来解释。
拦截器的作用:主要是为了用来实现对request请求进行统一处理的操作,比如对请求的编码格式修改,进行业务上的请求拦截等等。
拦截器的实现:
- 先创建一个配置类,用来将拦截器注册到spring中。
1 import org.springframework.context.annotation.Configuration; 2 import org.springframework.web.servlet.config.annotation.InterceptorRegistration; 3 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 4 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 5 6 /** 7 * @author: DengMin 8 * @create: 2019-12-06 10:22 9 **/ 10 11 @Configuration 12 public class TestConfig extends WebMvcConfigurerAdapter { 13 14 @Override 15 public void addInterceptors(InterceptorRegistry registry) { 16 //注册拦截器 17 InterceptorRegistration registration = registry.addInterceptor(new TestInterceptor()); 18 registration.addPathPatterns("/**"); 19 registration.excludePathPatterns("/base/nologin", 20 "/v2/api-docs", 21 "/webjars/bycdao-ui/**", 22 "/error"); 23 } 24 }
其中 addPathPatterns你需要拦截的地址,而excludePathPatterns就代表你不需要进行拦截的地址。
2.创建一个拦截器并实现HandlerInterceptor方法
1 import lombok.extern.slf4j.Slf4j; 2 import org.springframework.web.servlet.HandlerInterceptor; 3 import org.springframework.web.servlet.ModelAndView; 4 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 8 /** 9 * @author: DengMin 10 * @create: 2019-12-06 10:18 11 **/ 12 13 @Slf4j 14 public class TestInterceptor implements HandlerInterceptor { 15 /** 16 * 17 * Object o 18 * @param request 请求内容 19 * @param response 返回内容 20 * @param o 表示的是被拦截请求的目标对象 21 * @return 表示我们是否需要将当前的请求拦截下来 22 * 返回false 表示请求将会被终止 23 * 返回true 表示会继续被运行后面的方法 24 * @throws Exception 25 */ 26 27 @Override 28 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { 29 30 31 //在请求被处理之前调用 32 String session = (String) request.getSession().getAttribute("user"); 33 if (session != null){ 34 return true; 35 } 36 response.sendRedirect(request.getContextPath()+"/base/nologin"); 37 return false; 38 } 39 40 /** 41 * 42 * @param httpServletRequest 43 * @param httpServletResponse 44 * @param o 45 * @param modelAndView 46 * @throws Exception 47 */ 48 @Override 49 public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 50 System.out.println("在请求被处理之后被执行"); 51 } 52 53 @Override 54 public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 55 System.out.println("在请求结束之后才进行调用"); 56 57 } 58 }
配置好之后,就可以通过访问链接进行测试了。
分类:
Spring Boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix