Spring Boot 拦截器 用法
拦截器 一般用于拦截动态资源的后台请求 使用场景比较多的是判断用户是否有权限请求后台
定义拦截器,只需要实现 HandlerInterceptor 接口, 该接口中有三个方法
preHandle(……) 拦截后进入这个方法 根据业务来决定是否放行 返回 true 则放行,返回 false 则不会向后执行
postHandle(……)执行完controller的方法后 在 DispatcherServlet 视图渲染之前。方法中有个 ModelAndView 参数,可以在此做一些修改动作
afterCompletion(……) 该方法是在整个请求处理完成后(包括视图渲染)执行,这时做一些资源的清理工作,这个方法只有在 preHandle(……) 被成功执行后并且返回 true才会被执行。
步骤1 首先定义一个拦截类 建一个类 实现HandlerInterceptor接口
public class MyInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod handlerMethod = (HandlerMethod) handler; Method method = handlerMethod.getMethod(); String methodName = method.getName(); logger.info("方法{}被拦截", methodName);
//这里可以获取很多东西 还可以获取路径 //拦截住的方法会到这里 这里写业务 如果放行返回true 不放行返回false return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { logger.info("方法被执行,但是视图还未渲染"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { logger.info("方法执行完毕,进行资源清理"); } }
步骤2 写一个配置类 在配置类中实现WebMvcConfigurer 进行拦截路径
@Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) //可以把配置类加入bean 然后autowier得到 或者@Bean 返回值得到 JavaConfig 三种方法都可以 .addPathPatterns("/**") //拦截的路径 **代表所有 .excludePathPatterns("/adminUser/login"); //不拦截的路径 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!