<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

    導航

    統計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 美女被免费视频网站a| 国产精品亚洲lv粉色| 中文毛片无遮挡高清免费| 亚洲 国产 图片| 一区在线免费观看| 精品亚洲一区二区三区在线观看| 青青草97国产精品免费观看| 国产亚洲精品自在线观看| 成人网站免费大全日韩国产| 国产成人A人亚洲精品无码| 国内永久免费crm系统z在线| 久久久亚洲欧洲日产国码农村| 国产精品99精品久久免费| 久久国产亚洲精品无码| 久草视频免费在线| 国产精品亚洲а∨天堂2021| 亚洲国产成人久久精品99| 成年女人A毛片免费视频| 亚洲男人的天堂在线播放| 黄页免费的网站勿入免费直接进入| 国产成人精品日本亚洲网址| 免费看大黄高清网站视频在线| 美女羞羞视频免费网站| 亚洲中文久久精品无码| 亚洲成人在线免费观看| 亚洲a∨无码精品色午夜| 国产成人精品日本亚洲专区61| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 丁香五月亚洲综合深深爱| 男女交性无遮挡免费视频| 亚洲中文字幕第一页在线| 国产2021精品视频免费播放| 亚洲午夜无码毛片av久久京东热| 亚洲国产午夜中文字幕精品黄网站| 拍拍拍无挡免费视频网站| 亚洲人成在线精品| 亚洲A∨精品一区二区三区| 日韩精品内射视频免费观看| 亚洲日本成本人观看| 国产亚洲精品资源在线26u| 精品久久久久成人码免费动漫|