springMVC初探視圖解析器——InternalResourceViewResolver


springmvc在處理器方法中通常返回的是邏輯視圖,如何定位到真正的頁面,就需要通過視圖解析器。

springmvc里提供了多個視圖解析器,InternalResourceViewResolver就是其中之一

最常用的視圖解析器:InternalResourceViewResolver

image

 

當處理器返回“index”時,InternalResourceViewResolver解析器會自動添加前綴和后綴:/WEB-INF/jsp/index.jsp

注意:這里的order表示視圖解析的優先級,數目越小優先級越大(即:0為優先級最高,所以優先進行處理視圖),

InternalResourceViewResolver在項目中的優先級必須設置為最低,也就是order要最大。不然它會阻礙其他

視圖解析器。為什么呢?

解釋如下:

我們知道,當處理器返回邏輯視圖時(也就是return “string”),要經過視圖解析器鏈,前面的解析器能處理的,就不會繼續往下傳播。

如果不能處理就要沿着解析器鏈繼續尋找,直到找到合適的視圖解析器(概括為:能解析的,不繼續往下找,不能解析的,要繼續往下找解析器)。

看下面的圖:

假如我們有幾個視圖解析器:視圖解析器1、視圖解析器2、視圖解析器3。如圖

image

 

當處理器(@controller)返回的邏輯視圖解析過程:

當經過視圖解析器1時,如果能解析就解析而且不會再繼續往下。如果不能執行就返回null,這樣下面的解析器才能處理。

但是對於解析器InternalResourceViewResolver來說,不管能不能解析它都不會返回null,也就是說它攔截了所有的邏輯視圖,

讓后續的解析器得不到執行,所以InternalResourceViewResolver必須放在最后。

記住一點:不能解析就返回null,這樣后續解析器才能解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM