亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 2175 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條評論
主站蜘蛛池模板: 欧美精品亚洲精品日韩经典 | 成人欧美视频免费看黄黄 | 人人揉人人爽五月天视频 | 老司机永久免费网站在线观看 | 亚洲成人在线视频 | 亚洲精品久久久久久小说 | 1024国产欧美日韩精品 | a毛片久久免费观看 | 精品国产免费福利片 | 国产手机在线视频放线视频 | 天天做夜夜做 | 天天操夜夜拍 | 日本囗交做爰视频欧美 | 亚洲国产成人久久综合一区 | 二区三区 | 国产精品久久久久久免费 | 黄片a级毛片| 97在线观看免费视频 | 欧美性色黄大片一级毛片视频 | 亚洲精品国产自在久久出水 | 毛片在线视频观看 | 欧美亚洲国产成人高清在线 | 曰曰啪天天拍视频在线 | 国产自产视频 | 激情时刻 | 日本黄页网址 | 黄色免费在线观看 | 成人网18免费网 | 91精品日本久久久久久牛牛 | 四虎w345com| 爆操白虎| 欧美激情_区二区三区 | 亚洲一区视频在线播放 | 日本又黄又爽又色的免费视频 | 国内精品自在自线在免费 | 草免费视频 | 国产精品夜夜春夜夜爽久久 | 欧美在线一级片 | 中文字幕专区在线亚洲 | 国产精品二区三区 | 97一区二区三区 |