當前位置:首頁 » 網頁前端 » 前端添加攔截器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端添加攔截器

發布時間: 2023-07-05 01:45:18

前端設置了伺服器請求攔截過後數據不顯示

組件需要緩存的話直接可以 在路由中配置相關元信息欄位,然後在路由渲染出口添加路由緩存標簽<keep-alive></盯簡螞keep-alive>

2.組件數據載入時需要登錄許可權:這個實現的方式比較多,①可以定義介面返回碼凱埋,根據返回碼確定是否需要登錄,然後做相應跳轉。②使用vue-resource或者axios時配咐哪置全局攔截器,當然也必須結合緩存確定登錄狀態,來實現攔截跳轉。③在組件生命周期鉤子中判斷登錄狀態需要結合緩存,實現攔截跳轉。

② javaWeb如何寫攔截器過濾前端所有請求中的數

頁面時JSP頁面吧,從資料庫中讀取的數據應該是分頁顯示出來的如果你的頁面的數據記錄的條數是pageSize個 JSP頁面:for(int i=0;i<pageSize;i++){ <input type=checkbox name=<%=i %> value=<%=id %>>記錄內容 // 循環顯示每條記錄並加入復選框,id是表的主碼 }點擊刪除按鈕後進入一個Servlet控制器String id=null;for(int i=0;i<pageSize;i++){ id=request.getParameter(i+""); if(id!=null){ 刪除記錄方法(String id); }}在model中再寫一個根據ID刪除記錄的類.方法就OK了 很好寫 我就不寫了

③ SpringBoot:訪問攔截器HandlerInterceptor的使用

完成

應用場景
1、日誌記錄,可以記錄請求信息的日誌,以便進行信息監控、信息統計等。
2、許可權檢查:如登陸檢測,進入處理器檢測是否登陸,如果沒有直接返回到登陸頁面。
3、性能監控:典型的是慢日誌。

攔截器我想大家都並不陌生,最常用的登錄攔截、或是許可權校驗、或是防重復提交、或是根據業務像12306去校驗購票時間,總之可以去做很多的事情。

定義一個Interceptor 非常簡單方式也有幾種,我這里簡單列舉兩種

1、類要實現Spring 的HandlerInterceptor 介面

2、類繼承實現了HandlerInterceptor 介面的類,例如 已經提供的實現了HandlerInterceptor 介面的抽象類HandlerInterceptorAdapter

preHandle:在業務處理器處理請求之前被調用。預處理,可以進行編碼、安全控制、許可權校驗等處理;

postHandle:在業務處理器處理請求執行完成後,生成視圖之前執行。後處理(調用了Service並返回ModelAndView,但未進行頁面渲染),有機會修改ModelAndView (這個博主就基本不怎麼用了);

afterCompletion:在DispatcherServlet完全處理完請求後被調用,可用於清理資源等。返回處理(已經渲染了頁面);

------------

這樣在我們業務中比如要記錄系統日誌,日誌肯定是在afterCompletion之後記錄的,否則中途失敗了,也記錄了,那就扯淡了。一定是程序正常跑完後,我們記錄下那些對資料庫做個增刪改的操作日誌進資料庫。所以我們只需要繼承HandlerInterceptorAdapter,並重寫afterCompletion一個方法即可,因為preHandle默認是true。

運行流程總結如下:

1、攔截器執行順序是按照Spring配置文件中定義的順序而定的。

2、會先按照順序執行所有攔截器的preHandle方法,一直遇到return false為止,比如第二個preHandle方法是return false,則第三個以及以後所有攔截器都不會執行。若都是return true,則按順序載入完preHandle方法。

3、然後執行主方法(自己的controller介面),若中間拋出異常,則跟return false效果一致,不會繼續執行postHandle,只會倒序執行afterCompletion方法。

4、在主方法執行完業務邏輯(頁面還未渲染數據)時,按倒序執行postHandle方法。若第三個攔截器的preHandle方法return false,則會執行第二個和第一個的postHandle方法和afterCompletion(postHandle都執行完才會執行這個,也就是頁面渲染完數據後,執行after進行清理工作)方法。(postHandle和afterCompletion都是倒序執行)

WebMvcConfigurer配置類其實是Spring內部的一種配置方式,採用JavaBean的形式來代替傳統的xml配置文件形式進行針對框架個性化定製,可以 自定義一些Handler,Interceptor,ViewResolver,MessageConverter 。基於java-based方式的spring mvc配置,需要創建一個 配置 類並實現 WebMvcConfigurer 介面;

在Spring Boot 1.5版本都是靠重寫 WebMvcConfigurerAdapter 的方法來添加自定義攔截器,消息轉換器等。SpringBoot 2.0 後,該類被標記為@Deprecated(棄用)。官方推薦直接實現WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport,方式一 實現WebMvcConfigurer介面( 推薦),方式二繼承WebMvcConfigurationSupport類

其中常用的方法:

以前寫SpringMVC的時候,如果需要訪問一個頁面,必須要寫Controller類,然後再寫一個方法跳轉到頁面,感覺好麻煩,其實重寫WebMvcConfigurer中的addViewControllers方法即可達到效果了

值的指出的是,在這里重寫addViewControllers方法,並不會覆蓋 WebMvcAutoConfiguration (Springboot自動配置)中的addViewControllers(在此方法中,Spring Boot將「/」映射至index.html),這也就意味著 自己的配置和Spring Boot的自動配置同時有效 ,這也是我們推薦添加自己的MVC配置的方式。

比如,我們想 自定義靜態資源映射目錄 的話,只需重寫addResourceHandlers方法即可。

註:如果繼承WebMvcConfigurationSupport類實現配置時必須要重寫該方法,具體見其它文章

此時會注冊一個默認的Handler:,這個Handler也是用來處理靜態文件的,它會嘗試映射/。當DispatcherServelt映射/時(/ 和/ 是有區別的),並且沒有找到合適的Handler來處理請求時,就會交給 來處理。注意:這里的靜態資源是放置在web根目錄下,而非WEB-INF 下。
可能這里的描述有點不好懂(我自己也這么覺得),所以簡單舉個例子,例如:在webroot目錄下有一個圖片:1.png 我們知道Servelt規范中web根目錄(webroot)下的文件可以直接訪問的,但是由於DispatcherServlet配置了映射路徑是:/ ,它幾乎把所有的請求都攔截了,從而導致1.png 訪問不到,這時注冊一個 就可以解決這個問題。其實可以理解為DispatcherServlet破壞了Servlet的一個特性(根目錄下的文件可以直接訪問),是幫助回歸這個特性的。

這個方法是用來 配置視圖解析器 的,該方法的參數ViewResolverRegistry 是一個注冊器,用來注冊你想自定義的視圖解析器等。ViewResolverRegistry 常用的幾個方法: