日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringBoot 攔截器Intercepto的創建與基本使用

作者:生產隊的驢. 更新時間: 2024-02-16 編程語言

介紹

攔截器和過濾器的功能都差不多,攔截器是SpringBoot的,而且過濾器是Servlet的
SpringBoot過濾器

攔截器-過濾器 執行順序

發起請求-》過濾器-》攔截器-》接口


創建攔截器

實現HandlerInterceptor 的接口,并且實現他都三個方法

  • preHandle: 進入controller前執行 true放行 false不放行
  • postHandle: controller運行完成后執行
  • afterCompletion: 視圖渲染完畢后執行 最后執行的方法

三個方法都默認實現,按要求保留即可

@Component //交給IOC容器管理
public class RequestInterceptor  implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //進入controller前執行 true放行 false不放行


		//攔截到執行的操作

          //  return HandlerInterceptor.super.preHandle(request, response, handler);
          return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //controller運行完成后執行
       // HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //視圖渲染完畢后執行 最后執行的方法
      //  HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    
}

注冊攔截器(配置類)

配置類繼承接口WebMvcConfigurer ,并實現他都addInterceptors方法,

@Configuration //表示該類為配置類
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private RequestInterceptor interceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/**");
        //攔截所有的請求


//        registry.addInterceptor(interceptor)
//                .addPathPatterns("/user")//需要攔截的請求
//                .excludePathPatterns("/login");//不需要攔截的請求
       
    }
}

攔截路徑的配置

  • /*: 攔截所有一級路徑,如:/login 或 /user …
  • /**: 攔截任意路徑,如:/login 或 /user/1 或 /deletes/user/1
  • /user/*: 攔截/user的任意一級路徑 如:/user/login,不可以攔截二級如:/user/deletes/2
  • /user/**: 攔截/user下的任意路徑

原文鏈接:https://blog.csdn.net/dpc5201314/article/details/136046965

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新