日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

第四章 Controller接口控制器詳解 (4)——跟

系統 2476 0

?

4.12、ParameterizableViewController

參數化視圖控制器,不進行功能處理(即靜態視圖),根據參數的邏輯視圖名直接選擇需要展示的視圖。

Java代碼?? ?
  1. <bean?name="/parameterizableView"??
  2. class="org.springframework.web.servlet.mvc.ParameterizableViewController">??
  3. <property?name="viewName"?value="success"/>??
  4. </bean>??

該控制器接收到請求后直接選擇參數化的視圖,這樣的好處是在配置文件中配置,從而避免程序的硬編碼,比如像幫助頁面等不需要進行功能處理,因此直接使用該控制器映射到視圖。

4.13、AbstractUrlViewController

提供根據請求URL路徑直接轉化為邏輯視圖名的支持基類,即不需要功能處理,直接根據URL計算出邏輯視圖名,并選擇具體視圖進行展示:

urlDecode 是否進行url解碼,不指定則默認使用服務器編碼進行解碼(如Tomcat默認ISO-8859-1);

urlPathHelper 用于解析請求路徑的工具類,默認為org.springframework.web.util.UrlPathHelper。

?

UrlFilenameViewController是它的一個實現者,因此我們應該使用UrlFilenameViewController。

?

4.14、UrlFilenameViewController

將請求的URL路徑轉換為邏輯視圖名并返回的轉換控制器,即不需要功能處理,直接根據URL計算出邏輯視圖名,并選擇具體視圖進行展示:

?

根據請求URL路徑計算邏輯視圖名;

?

Java代碼?? ?
  1. <bean?name="/index1/*"???
  2. class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??
  3. <bean?name="/index2/**"???
  4. class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??
  5. <bean?name="/*.html"???
  6. class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??
  7. <bean?name="/index3/*.html"???
  8. class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??

/index1/* 可以匹配/index1/demo,但不匹配/index1/demo/demo,如/index1/demo邏輯視圖名為demo;

/index2/** 可以匹配/index2路徑下的所有子路徑,如匹配/index2/demo,或/index2/demo/demo,“/index2/demo”的邏輯視圖名為demo,而“/index2/demo/demo”邏輯視圖名為demo/demo;

/*.html 可以匹配如/abc.html,邏輯視圖名為abc,后綴會被刪除(不僅僅可以是html);

/index3/*.html 可以匹配/index3/abc.html,邏輯視圖名也是abc;

?

上述模式為Spring Web MVC使用的Ant-style?模式進行匹配的:

?

Java代碼?? ?
  1. ?????匹配一個字符,如/index??可以匹配?/index1?,?但不能匹配?/index?或?/index12??
  2. *????匹配零個或多個字符,如/index1/*,可以匹配/index1/demo,但不匹配/index1/demo/demo?
  3. **???匹配零個或多個路徑,如/index2/**:可以匹配/index2路徑下的所有子路徑,如匹配/index2/demo,或/index2/demo/demo?
  4. ?
  5. 如果我有如下模式,那Spring該選擇哪一個執行呢?當我的請求為“/long/long”時如下所示:?
  6. /long/long?
  7. /long/**/abc??
  8. /long/**?
  9. /**?
  10. Spring的AbstractUrlHandlerMapping使用:最長匹配優先;?
  11. 如請求為“/long/long”?將匹配第一個“/long/long”,但請求“/long/acd”?則將匹配?“/long/**”,如請求“/long/aa/abc”則匹配“/long/**/abc”,如請求“/abc”則將匹配“/**”??

UrlFilenameViewController還提供了如下屬性:

prefix 生成邏輯視圖名的前綴;

suffix 生成邏輯視圖名的后綴;

Java代碼?? ?
  1. protected?String?postProcessViewName(String?viewName)?{??
  2. ????????return?getPrefix()?+?viewName?+?getSuffix();??
  3. }??
Java代碼?? ?
  1. <bean?name="/*.htm"?class="org.springframework.web.servlet.mvc.UrlFilenameViewController">??
  2. ????????<property?name="prefix"?value="test"/>??
  3. ????????<property?name="suffix"?value="test"/>??
  4. </bean>??

prefix= “test ”,suffix= “test ,如上所示的 /*.htm 可以匹配如/abc.htm,但邏輯視圖名將變為testabctest。

?

私塾在線學習網 原創內容( http://sishuok.com

原創內容,轉載請注明私塾在線【 http://sishuok.com/forum/blogPost/list/5498.html

?

?

第四章 Controller接口控制器詳解 (4)——跟著開濤學SpringMVC


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 威宁| 申扎县| 平顺县| 寿宁县| 依安县| 乳山市| 宁城县| 余干县| 南雄市| 小金县| 木兰县| 金阳县| 丹江口市| 屯昌县| 延津县| 贵德县| 安塞县| 寿宁县| 岳普湖县| 都昌县| 湾仔区| 禹城市| 周至县| 南开区| 邻水| 五华县| 太原市| 响水县| 延安市| 阿巴嘎旗| 温州市| 乌鲁木齐市| 青神县| 墨脱县| 涟源市| 子长县| 泗阳县| 福鼎市| 且末县| 洪江市| 梧州市|