随笔 - 35  文章 - 0  评论 - 0  阅读 - 9032

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"); //不拦截的路径
    }
}
复制代码

 

posted on   ziwang520  阅读(394)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示