天天看點

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

Spring MVC的定制配置需要我們的配置類繼承一個WebMvcConfigurerAdapter類并在此類使用@EnableWebMvc注解來開啟對Spring MVC的配置支援這樣我們就可以重寫這個類的方法完成我們的常用配置。

程式的靜态檔案(js、css、圖檔)等需要直接通路這時我們可以在配置裡重寫addResourceHandlers方法來實作。

1、添加靜态資源我們在src/main/resources下建立assets/js目錄并複制一個jquery.js放置在此目錄下如下圖

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置
【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

攔截器Interceptor實作對每一個請求處理前後進行相關的業務處理類似于Servlet的Filter。

可讓普通的Bean實作HanlderInterceptor接口或者內建HandlerInterceptorAdapter類實作自定義攔截器。

通過重寫WebMvcConfigurerAdapter的addInterceptors方法來注冊自定義的攔截器本節示範一個簡單的攔截器的開發和配置業務含義為計算每一次請求的處理時間。

如果需要攔截特定的網址可利用正則映射到需要攔截的路徑 然後在preHandle方法中判斷request.getRequestURL().toString()進行比對用matches方法。

寫在MyMvcConfig中

添加index.jsp

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置
【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

通路靜态資源不會攔截哦也就是直接通路.js的那個檔案不會被攔截。

在src/main/resources/views下建立error.jsp内容如下

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置
【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

可以看到id被過濾掉了

在前面我們配置頁面轉向的時候是這樣寫代碼的

此處無任何業務處理隻是簡單的頁面轉向寫了很多備援代碼在實際開發中會涉及大量這樣的頁面轉向如果都這樣寫會很麻煩。

是以我們可以通過在配置中重寫addViewControllers來簡化配置

這樣實作的代碼更簡潔管理更集中。

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

在Spring MVC中路徑參數如果帶”.”的話”.”後面的值都将被忽略例如:

我們在AdviceController.java中增加代碼

結果如下

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

可以看到”.”後面的參數沒有傳過去

我們可以這樣解決、通過重寫configurePathMatch方法可不忽略”.”後面的參數代碼如下寫在Spring MVC配置類中

這個時候我們重新運作在看繼續通路剛才的位址

【SpringMVC】SpringMVC基礎-靜态資源映射、攔截器配置、@ControllerAdvice與其他基本配置靜态資源映射攔截器配置@ControllerAdvice其他配置

本篇部落格涉及到的源碼連結

歡迎轉載分享是進步的源泉。