日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不拦截指定路径_控制层访问拦截

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不拦截指定路径_控制层访问拦截 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在控制層進行訪問攔截也是我們在項目中常會遇到的需求,例如:項目中要求系統登錄操作有時間限制--12306購票時間的限制等.

對于這類需求我們一般有幾種選擇:

  • 過濾器Filter
  • AOP
  • SpringMVC攔截器...
  • 本文我們主要說一下SpringMVC攔截器的實現

    原理

    Spring MVC的攔截器是基于回調機制,可以在目標方法執行之前/之后,做一些處理.

    如下圖所示:

    客戶端的請求通過前端控制器會被HandleInterceptor攔截器攔截,會根據攔截器的方法(preHandle/postHandle),分別在Controller層的目標方法之前或之后只寫一些業務.

    實現

    我們要實現的是登錄前的攔截,然后進行時間判定--所以我們需要用preHandle方法,可以在目標方法執行之前,先進行業務檢測,滿足條件則放行,不滿足條件則進行攔截

    具體實現分為兩步:

  • 定義攔截器:
  • public class TimeAccessInterceptor implements HandlerInterceptor{ /** 此方法會在你的目標Controller執行之前執行 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("==preHandler=="); LocalDateTime now = LocalDateTime.now();//JDK8的新特性 int hour = now.getHour(); System.out.println("hour:"+hour); if(hour<9||hour>19) throw new ServiceException("不在訪問時間:9~14");//return false return true;//true表示放行,false表示請求到此結束 }}

    我們自己創建一個類并且實現HandlerInterceptor攔截器接口,然后根據你的業務需求實現方法,我們這里實現的是preHandle方法用于在controller執行之前執行,通過JDK8的新特性--LocalDateTime.now()來獲取當前時間,可以再通過now.getHoure()等方法來獲取具體的小時/分鐘/秒等.在判斷是否在我們禁止登陸的時間范圍內,如果是則拋出異常(這里ServiceException是我們自己定義的異常類),拋出異常==return false,返回值return true表示放行,false表示攔截結束.

  • 對攔截器進行配置
  • @Configurationpublic class SpringWebConfig implements WebMvcConfigurer { /** * 注冊攔截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new TimeAccessInterceptor()) .addPathPatterns("/user/doLogin"); }}

    創建一個SpringWebConfig類并且實現WebMvcConfigurer接口,類由@Configuration注解描述,表示是一個配置類,重寫實現類中的addInterceptors方法,參數InterceptorRegistry registry攔截器集合,調用addInterceptor(new TimeAccessInterceptor())向其中添加我們定義的攔截器類,在調用addPathPatterns("/user/doLogin"),添加要攔截的路徑,()內就是我們登陸的路徑.

    總結

    以上是生活随笔為你收集整理的不拦截指定路径_控制层访问拦截的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。