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

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

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

    Java技術(shù)專區(qū)--Hilly

    http://blog.duyouyou.com
       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理
    5. 使用 Prebuilt Action類提升開發(fā)效率

      Struts framework帶有好幾個(gè)prebuilt Action類,使用它們可以大大節(jié)省開發(fā)時(shí)間。其中最有用的是org.apache.struts.actions.ForwardAction 和 org.apache.struts.actions.DispatchAction.

      使用 ForwardAction

      在應(yīng)用程序中,可能會(huì)經(jīng)常出現(xiàn)只要將Action對(duì)象轉(zhuǎn)發(fā)到某個(gè)JSP的情況。在上一點(diǎn)中曾提到總是由Action調(diào)用JSP是個(gè)好習(xí)慣。如果我們不必在Action中執(zhí)行任何業(yè)務(wù)邏輯,卻又想遵循從Action訪問(wèn)頁(yè)面的話,就可以使用ForwardAction,它可以使你免去創(chuàng)建許多空的Action類。運(yùn)用ForwardAction的好處是不必創(chuàng)建自己的Action類,你需要做的僅僅是在Struts配置文件中配置一個(gè)Action mapping。

      舉個(gè)例子,假定你有一個(gè)JSP文件index.jsp ,而且不能直接調(diào)用該頁(yè)面,必須讓程序通過(guò)一個(gè)Action類調(diào)用,那么,你可以建立以下的Action mapping來(lái)實(shí)現(xiàn)這一點(diǎn):


      正如你看到的,當(dāng) /home 被調(diào)用時(shí), 就會(huì)調(diào)用ForwardAction 并把請(qǐng)求轉(zhuǎn)發(fā)到 index.jsp 頁(yè)面.
    再討論一下不通過(guò)一個(gè)Action類直接轉(zhuǎn)發(fā)到某個(gè)頁(yè)面的情況,必須注意我們?nèi)匀皇褂?action>元素中的forward屬性來(lái)實(shí)現(xiàn)轉(zhuǎn)發(fā)的目標(biāo)。這時(shí)元素定義如下:


      以上兩種方法都可以節(jié)省你的時(shí)間,并有助于減少一個(gè)應(yīng)用所需的文件數(shù)。

      使用 DispatchAction

      DispatchAction是Struts包含的另一個(gè)能大量節(jié)省開發(fā)時(shí)間的Action類。與其它Action類僅提供單個(gè)execute()方法實(shí)現(xiàn)單個(gè)業(yè)務(wù)不同,DispatchAction允許你在單個(gè)Action類中編寫多個(gè)與業(yè)務(wù)相關(guān)的方法。這樣可以減少Action類的數(shù)量,并且把相關(guān)的業(yè)務(wù)方法集合在一起使得維護(hù)起來(lái)更容易。

      要使用DispatchAction的功能,需要自己創(chuàng)建一個(gè)類,通過(guò)繼承抽象的DispatchAction得到。對(duì)每個(gè)要提供的業(yè)務(wù)方法必須有特定的方法signature。例如,我們想要提供一個(gè)方法來(lái)實(shí)現(xiàn)對(duì)購(gòu)物車添加商品清單,創(chuàng)建了一個(gè)類ShoppingCartDispatchAction提供以下的方法:


      那么,這個(gè)類很可能還需要一個(gè)deleteItem()方法從客戶的購(gòu)物車中刪除商品清單,還有clearCart()方法清除購(gòu)物車等等。這時(shí)我們就可以把這些方法集合在單個(gè)Action類,不用為每個(gè)方法都提供一個(gè)Action類。

      在調(diào)用ShoppingCartDispatchAction里的某個(gè)方法時(shí),只需在URL中提供方法名作為參數(shù)值。就是說(shuō),調(diào)用addItem()方法的 URL看起來(lái)可能類似于:

      http://myhost/storefront/action/cart?method=addItem

      其中method參數(shù)指定ShoppingCartDispatchAction中要調(diào)用的方法。參數(shù)的名稱可以任意配置,這里使用的"method"只是一個(gè)例子。參數(shù)的名稱可以在Struts配置文件中自行設(shè)定。

      6.使用動(dòng)態(tài)ActionForm

      在Struts framework中,ActionForm對(duì)象用來(lái)包裝HTML表格數(shù)據(jù)(包括請(qǐng)求),并返回返回動(dòng)態(tài)顯示給用戶的數(shù)據(jù)。它們必須是完全的JavaBean,并繼承.Struts 里面的ActionForm類,同時(shí),用戶可以有選擇地覆蓋兩個(gè)缺省方法。

      該特性能節(jié)省很多時(shí)間,因?yàn)樗梢詤f(xié)助進(jìn)行自動(dòng)的表現(xiàn)層的驗(yàn)證。ActionForm的唯一缺點(diǎn)是必須為不同的HTML表格生成多個(gè)ActionForm 類以保存數(shù)據(jù)。例如,如果有一個(gè)頁(yè)面含有用戶的注冊(cè)信息,另一個(gè)頁(yè)面則含有用戶的介紹人的信息,那么就需要有兩個(gè)不同的ActionForm類。這在大的應(yīng)用系統(tǒng)中就會(huì)導(dǎo)致過(guò)多的ActionForm類。Struts 1.1對(duì)此做出了很好的改進(jìn),引入了動(dòng)態(tài)ActionForm類概念

      通過(guò)Struts framework中的DynaActionForm類及其子類可以實(shí)現(xiàn)動(dòng)態(tài)的ActionForm ,動(dòng)態(tài)的ActionForm允許你通過(guò)Struts的配置文件完成ActionForm的全部配置;再也沒(méi)有必要在應(yīng)用程序中創(chuàng)建具體的ActionForm類。具體配置方法是:在Struts的配置文件通過(guò)增加一個(gè)元素,將type屬性設(shè)定成DynaActionForm或它的某個(gè)子類的全名。下面的例子創(chuàng)建了一個(gè)動(dòng)態(tài)的ActionForm名為logonForm,它包含兩個(gè)實(shí)例變量:username 和 password.


      動(dòng)態(tài)的ActionForm可以用于Action類和JSP,使用方法跟普通的ActionForm相同,只有一個(gè)小差別。如果使用普通的ActionForm對(duì)象則需要提供get 和 set方法取得和設(shè)置數(shù)據(jù)。以上面的例子而言,我們需要提供getUsername() 和 setUsername()方法取得和設(shè)置username變量,同樣地有一對(duì)方法用于取得和設(shè)置password變量.

      這里我們使用的是DynaActionForm,它將變量保存在一個(gè)Map類對(duì)象中,所以必須使用DynaActionForm 類中的get(name) 和 set(name)方法,其中參數(shù)name是要訪問(wèn)的實(shí)例變量名。例如要訪問(wèn)DynaActionForm中username的值,可以采用類似的代碼:

      String username = (String)form.get("username");

      由于值存放在一個(gè)Map對(duì)象,所以要記得對(duì)get()方法返回的Object對(duì)象做強(qiáng)制性類型轉(zhuǎn)換。
    DynaActionForm有好幾個(gè)很有用的子類。其中最重要的是DynaValidatorForm ,這個(gè)動(dòng)態(tài)的ActionForm和Validator 一起利用公共的Validator包來(lái)提供自動(dòng)驗(yàn)證。這個(gè)特性使你得以在程序代碼之外指定驗(yàn)證規(guī)則。將兩個(gè)特性結(jié)合使用對(duì)開發(fā)人員來(lái)說(shuō)將非常有吸引力。

      7. 使用可視化工具

      自從Struts 1.0 分布以來(lái),就出現(xiàn)了不少可視化工具用于協(xié)助創(chuàng)建,修改和維護(hù)Struts的配置文件。配置文件本身是基于XML格式,在大中型的開發(fā)應(yīng)用中會(huì)增大變得很笨拙。為了更方便的管理這些文件,一旦文件大到你無(wú)法一目了然的時(shí)候,建議試著采用其中的一種GUI 工具協(xié)助開發(fā)。商業(yè)性的和開放源代碼的工具都有不少,表1列出了可用的工具和其相關(guān)鏈接,從那里可以獲取更多信息。

      表 1. Struts GUI 工具
    應(yīng)用程序性質(zhì) 網(wǎng)址
    Adalon商業(yè)軟件http://www.synthis.com/products/adalon
    Easy Struts 開放源碼http://easystruts.sourceforge.net/
    Struts Console免費(fèi)http://www.jamesholmes.com/struts/console
    JForms 商業(yè)軟件http://www.solanasoft.com/
    Camino 商業(yè)軟件http://www.scioworks.com/scioworks_camino.html
    Struts Builder 開放源碼http://sourceforge.net/projects/rivernorth/
    StrutsGUI 免費(fèi)http://www.alien-factory.co.uk/struts/struts-index.html


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    Hold住
    主站蜘蛛池模板: 亚洲精品美女久久久久| 亚洲人成电影网站免费| 最近免费中文字幕高清大全 | 亚洲日韩精品一区二区三区无码 | 国产成人不卡亚洲精品91| 四虎1515hm免费国产| 国产精品免费久久久久影院 | 亚洲国产成人精品电影| 成年美女黄网站18禁免费| 大片免费观看92在线视频线视频 | 精品久久久久久无码免费| 亚洲va在线va天堂va四虎| 久久受www免费人成_看片中文| 亚洲国产日韩a在线播放| 久久青青草原亚洲av无码| 蜜桃成人无码区免费视频网站 | 国产亚洲精品精品国产亚洲综合| 蜜桃成人无码区免费视频网站 | 黄色网址大全免费| 色婷婷亚洲十月十月色天| 成人免费无毒在线观看网站| yellow免费网站| 亚洲午夜精品一区二区公牛电影院| 日韩在线a视频免费播放| 成人黄网站片免费视频| 在线观看亚洲AV每日更新无码| 国产午夜鲁丝片AV无码免费| 男女作爱在线播放免费网站| 精品亚洲456在线播放| 亚洲色大成网站www永久一区| 久久国内免费视频| a毛片免费全部播放完整成| 亚洲精品伊人久久久久| 不卡精品国产_亚洲人成在线| 久久WWW免费人成人片| 日本免费A级毛一片| 亚洲AV成人精品一区二区三区| 91亚洲va在线天线va天堂va国产 | 久久精品国产亚洲AV网站| 永久免费视频v片www| 67pao强力打造高清免费|