springMVC初探視圖解析器——InternalResourceViewResolver

pringmvc在處理器方法中一般返回的是邏輯視圖,如何定位到真正的頁面,就須要經過視圖解析器。spring

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

最經常使用的視圖解析器:InternalResourceViewResolverjsp

image

 

當處理器返回「index」時,InternalResourceViewResolver解析器會自動添加前綴和後綴:/WEB-INF/jsp/index.jspblog

注意:這裏的order表示視圖解析的優先級,數目越小優先級越大(即:0爲優先級最高,因此優先進行處理視圖),get

InternalResourceViewResolver在項目中的優先級必須設置爲最低,也就是order要最大。否則它會阻礙其餘string

視圖解析器。爲何呢?方法

解釋以下:im

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

若是不能處理就要沿着解析器鏈繼續尋找,直到找到合適的視圖解析器(歸納爲:能解析的,不繼續往下找,不能解析的,要繼續往下找解析器)。img

看下面的圖:

假如咱們有幾個視圖解析器:視圖解析器一、視圖解析器二、視圖解析器3。如圖

image

 

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

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

可是對於解析器InternalResourceViewResolver來講,無論能不能解析它都不會返回null,也就是說它攔截了全部的邏輯視圖,

讓後續的解析器得不到執行,因此InternalResourceViewResolver必須放在最後。

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

相關文章
相關標籤/搜索