<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新:struts2_02請求和處理的映射

    請求和處理的映射,也就是常說的action和url之間的關系,struts2提供了很多種方式來配置他們之間的映射,01中提到的struts.xml配置
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6 
     7    <constant name="struts.action.extension" value="action,," /><!-- 請求后綴名-->  
     8    <package name="helloworld" extends="struts-default" namespace="/"><!-- struts-default這個包是一定要繼承的,否則struts很多重要功能會失效-->
     9       <action name="hello" <!-- action的名稱,namespace的值連接/hello表示請求該action  -->
    10             class="demo.action.HelloWorld"><!-- class表示該action的位置,在action的配置中,如果不指定調用哪個方法,則默認調用execute方法  -->
    11             <result name="success">/helloWorld.jsp</result><!-- action的返回結果,以及相應的視圖  -->
    12       </action>
    13    </package>
    14 
    15 </struts>
    就是一種方式。這個配置中,就已經能很明顯的看出action和url之間的關系,只是這段配置沒有指明具體調用action中的哪個方法,所有默認調用了execute方法,雖然比較笨拙,但是這可以記為配置映射的第一個方法。需要特別一提的是struts.action.extension配置,它代表了action的后綴名,逗號隔開。也就是說,它指定了哪些結尾的請求為struts請求,默認是action和空結尾的請求。

    方法一:
    一個action只對應一個請求,默認調用execute方法,這樣,為了滿足業務需求,package中就會出現大量的action配置。實際開發中,除非這個請求進行的操作非常多,以至于書寫的代碼幾千行,甚至上萬行,否則一般不會這么配置,就算真的出現這樣的情況,也極有可能和其他配置方式混搭使用,單獨使用的比較少。
    優點:配置簡單明了,而且action中只有一個方法,方便閱讀
    缺點:會出現大量的action配置,大量的action類

    方法二:
    為了讓一個action能夠對應多個請求,可以在方法一的基礎上為action的配置添加method屬性
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6 
     7    <package name="helloworld" extends="struts-default" namespace="/">
     8       <action name="hello" method="method01"
     9             class="demo.action.HelloWorld">
    10             <result name="success">/helloWorld.jsp</result>
    11       </action>
    12    </package>
    13 
    14 </struts>
    如此一來,action中的method01方法就會對應/hello請求。
    優點:可以減少action類的數量
    缺點:還是有大量的配置!!

    方法三:
    這種請求和處理的映射有點類似于將方法名當做參數來傳遞,struts.xml的配置和方法一一致,無需更改,只是在發送請求的時候需要將請求的方法一并發送,原始的請求是/hello,而連帶方法名的請求是/hello!hello,或者還可以寫/hello?method:hello(假定Helloworld類中有hello方法),這樣一來,就是直接調用hello方法來完成處理。
    優點:不僅可以完成一個action和多個請求的映射,還能減少action的配置,僅僅只是額外配置action的result即可
    缺點:地址注意不能寫錯,實際開發中不常用,或許只是看起來請求地址怪怪的。。。但依然是個不錯的配置方式

    方法四:
    基于通配符的映射
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6 
     7    <package name="helloworld" extends="struts-default" namespace="/">
     8       <action name="*_*" 
     9             class="demo.action.{1}action" method="{2}">
    10             <result name="success">/{1}/{2}.jsp</result>
    11       </action>
    12    </package>
    13 
    14 </struts>
    顯而易見,任何形式的“XX_XX”請求都會得到映射,{1}代表第一個*的值,{2}代表第二個,以此類推,最主要的是,一定要從action的名稱,到action內的方法,直至最后響應視圖的位置,都要好好的在請求中寫好。基于通配符的配置方式顯得十分靈活,但也要求十分的細心,是一種能同時簡化action類和配置內容的映射方式。這里要特別提到result的結果,結果可以是struts提供的SUCCESS,ERROR等但不限于這些返回結果,自定義的返回結果只要有對應的相應視圖即可。
    優點:配置靈活,精簡
    缺點:配置時要求仔細,使用統一的規則,所謂的“約定優于配置”

    實際開發中,根據各個配置方式的優缺點自行選擇,配置沒有絕對的好壞



    posted on 2014-10-30 00:38 都較瘦 閱讀(226) 評論(0)  編輯  收藏 所屬分類: MVCFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本免费人成黄页在线观看视频| 99久久久国产精品免费牛牛| 午夜两性色视频免费网站| 91大神亚洲影视在线| 四虎影视在线影院在线观看免费视频 | 农村寡妇一级毛片免费看视频| 免费视频淫片aa毛片| 亚洲va中文字幕| 国产免费资源高清小视频在线观看| 亚洲精品GV天堂无码男同| 国产免费69成人精品视频| 无码天堂va亚洲va在线va| yy6080亚洲一级理论| 成人妇女免费播放久久久| 亚洲AV无码不卡无码| 51精品视频免费国产专区| 亚洲婷婷综合色高清在线| 女人18毛片特级一级免费视频| 亚洲精品无播放器在线播放| 又爽又高潮的BB视频免费看| free哆拍拍免费永久视频| 亚洲欧洲日韩不卡| 在线视频观看免费视频18| 亚洲AV无码成人精品区狼人影院 | 亚洲日本一线产区和二线产区对比| 女人张腿给男人桶视频免费版| 亚洲国产精品成人AV在线| 亚洲精品尤物yw在线影院| 国产免费一区二区三区在线观看| 亚洲毛片基地日韩毛片基地| 日本免费一区尤物| 国产一级高青免费| 亚洲精品国产福利在线观看| 免费人成激情视频| 91精品国产免费久久国语蜜臀 | 在线观看亚洲视频| 亚洲高清国产拍精品26U| 无码免费午夜福利片在线 | 亚洲一区二区三区免费| 亚洲黄色中文字幕| 亚洲 另类 无码 在线|