Spring MVC的定制配置需要我們的配置類繼承一個WebMvcConfigurerAdapter類并在此類使用@EnableWebMvc注解來開啟對Spring MVC的配置支援這樣我們就可以重寫這個類的方法完成我們的常用配置。
程式的靜态檔案(js、css、圖檔)等需要直接通路這時我們可以在配置裡重寫addResourceHandlers方法來實作。
1、添加靜态資源我們在src/main/resources下建立assets/js目錄并複制一個jquery.js放置在此目錄下如下圖
攔截器Interceptor實作對每一個請求處理前後進行相關的業務處理類似于Servlet的Filter。
可讓普通的Bean實作HanlderInterceptor接口或者內建HandlerInterceptorAdapter類實作自定義攔截器。
通過重寫WebMvcConfigurerAdapter的addInterceptors方法來注冊自定義的攔截器本節示範一個簡單的攔截器的開發和配置業務含義為計算每一次請求的處理時間。
如果需要攔截特定的網址可利用正則映射到需要攔截的路徑 然後在preHandle方法中判斷request.getRequestURL().toString()進行比對用matches方法。
寫在MyMvcConfig中
添加index.jsp
通路靜态資源不會攔截哦也就是直接通路.js的那個檔案不會被攔截。
在src/main/resources/views下建立error.jsp内容如下
可以看到id被過濾掉了
在前面我們配置頁面轉向的時候是這樣寫代碼的
此處無任何業務處理隻是簡單的頁面轉向寫了很多備援代碼在實際開發中會涉及大量這樣的頁面轉向如果都這樣寫會很麻煩。
是以我們可以通過在配置中重寫addViewControllers來簡化配置
這樣實作的代碼更簡潔管理更集中。
在Spring MVC中路徑參數如果帶”.”的話”.”後面的值都将被忽略例如:
我們在AdviceController.java中增加代碼
結果如下
可以看到”.”後面的參數沒有傳過去
我們可以這樣解決、通過重寫configurePathMatch方法可不忽略”.”後面的參數代碼如下寫在Spring MVC配置類中
這個時候我們重新運作在看繼續通路剛才的位址
本篇部落格涉及到的源碼連結
歡迎轉載分享是進步的源泉。