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

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

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

    Java技術專區--Hilly

    http://blog.duyouyou.com
       :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    struts的七點經驗-3(轉)

    Posted on 2006-07-20 17:27 duyouyou.com 閱讀(123) 評論(0)  編輯  收藏
    5. 使用 Prebuilt Action類提升開發效率

      Struts framework帶有好幾個prebuilt Action類,使用它們可以大大節省開發時間。其中最有用的是org.apache.struts.actions.ForwardAction 和 org.apache.struts.actions.DispatchAction.

      使用 ForwardAction

      在應用程序中,可能會經常出現只要將Action對象轉發到某個JSP的情況。在上一點中曾提到總是由Action調用JSP是個好習慣。如果我們不必在Action中執行任何業務邏輯,卻又想遵循從Action訪問頁面的話,就可以使用ForwardAction,它可以使你免去創建許多空的Action類。運用ForwardAction的好處是不必創建自己的Action類,你需要做的僅僅是在Struts配置文件中配置一個Action mapping。

      舉個例子,假定你有一個JSP文件index.jsp ,而且不能直接調用該頁面,必須讓程序通過一個Action類調用,那么,你可以建立以下的Action mapping來實現這一點:


      正如你看到的,當 /home 被調用時, 就會調用ForwardAction 并把請求轉發到 index.jsp 頁面.
    再討論一下不通過一個Action類直接轉發到某個頁面的情況,必須注意我們仍然使用元素中的forward屬性來實現轉發的目標。這時元素定義如下:


      以上兩種方法都可以節省你的時間,并有助于減少一個應用所需的文件數。

      使用 DispatchAction

      DispatchAction是Struts包含的另一個能大量節省開發時間的Action類。與其它Action類僅提供單個execute()方法實現單個業務不同,DispatchAction允許你在單個Action類中編寫多個與業務相關的方法。這樣可以減少Action類的數量,并且把相關的業務方法集合在一起使得維護起來更容易。

      要使用DispatchAction的功能,需要自己創建一個類,通過繼承抽象的DispatchAction得到。對每個要提供的業務方法必須有特定的方法signature。例如,我們想要提供一個方法來實現對購物車添加商品清單,創建了一個類ShoppingCartDispatchAction提供以下的方法:


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

      在調用ShoppingCartDispatchAction里的某個方法時,只需在URL中提供方法名作為參數值。就是說,調用addItem()方法的 URL看起來可能類似于:

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

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

      6.使用動態ActionForm

      在Struts framework中,ActionForm對象用來包裝HTML表格數據(包括請求),并返回返回動態顯示給用戶的數據。它們必須是完全的JavaBean,并繼承.Struts 里面的ActionForm類,同時,用戶可以有選擇地覆蓋兩個缺省方法。

      該特性能節省很多時間,因為它可以協助進行自動的表現層的驗證。ActionForm的唯一缺點是必須為不同的HTML表格生成多個ActionForm 類以保存數據。例如,如果有一個頁面含有用戶的注冊信息,另一個頁面則含有用戶的介紹人的信息,那么就需要有兩個不同的ActionForm類。這在大的應用系統中就會導致過多的ActionForm類。Struts 1.1對此做出了很好的改進,引入了動態ActionForm類概念

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


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

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

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

      由于值存放在一個Map對象,所以要記得對get()方法返回的Object對象做強制性類型轉換。
    DynaActionForm有好幾個很有用的子類。其中最重要的是DynaValidatorForm ,這個動態的ActionForm和Validator 一起利用公共的Validator包來提供自動驗證。這個特性使你得以在程序代碼之外指定驗證規則。將兩個特性結合使用對開發人員來說將非常有吸引力。

      7. 使用可視化工具

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

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    Hold住
    主站蜘蛛池模板: 亚洲视频国产精品| 亚洲一级毛片免费看| 国产一精品一av一免费爽爽 | 久久乐国产精品亚洲综合| 最近免费mv在线观看动漫| 亚洲熟妇AV日韩熟妇在线| 国产亚洲美女精品久久久2020| 久久国产色AV免费看| 亚洲AV无码片一区二区三区 | 亚洲嫩草影院在线观看| 国产免费人人看大香伊| 久久成人免费电影| 亚洲AV无码专区在线电影成人 | 亚洲AV无码不卡在线播放| 成年人视频在线观看免费| 水蜜桃视频在线观看免费播放高清| 亚洲一区二区三区免费观看| 亚洲日韩在线观看免费视频| 无码国产精品一区二区免费式直播| 一道本在线免费视频| 亚洲影视自拍揄拍愉拍| 亚洲欧洲日产国码av系列天堂| 毛片免费观看视频| 日本一道本不卡免费 | 亚洲嫩草影院在线观看| 国产精品亚洲w码日韩中文| 野花高清在线观看免费完整版中文| 国产真人无码作爱免费视频| 含羞草国产亚洲精品岁国产精品| 亚洲宅男永久在线| 超清首页国产亚洲丝袜| 女人18毛片a级毛片免费视频| 久久精品一区二区免费看| 人人公开免费超级碰碰碰视频| 亚洲三级在线观看| 亚洲色欲www综合网| 亚洲乱码精品久久久久..| 亚洲AV无码乱码精品国产| 女性自慰aⅴ片高清免费| 免费观看国产网址你懂的| 免费成人在线视频观看|