<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的七點經驗-1(轉)

    Posted on 2006-07-20 17:20 duyouyou.com 閱讀(270) 評論(0)  編輯  收藏 所屬分類: web技術
    1. 只在必要的時候才考慮擴展Struts框架

      一個好的framework有很多優點,首先,它必須能夠滿足用戶的可預見的需求。為此 Struts為Web 應用提供了一個通用的架構,這樣開發人員可以把精力集中在如何解決實際業務問題上。其次,一個好的framework還必須能夠在適當的地方提供擴展接口,以便應用程序能擴展該框架來更好的適應使用者的實際需要。

      如果Struts framework在任何場合,任何項目中都能很好的滿足需求,那真是太棒了。但是實際上,沒有一個框架聲稱能做到這一點。一定會有一些特定的應用需求是框架的開發者們無法預見到的。因此,最好的辦法就是提供足夠的擴展接口,使得開發工程師能夠調整struts來更好的符合他們的特殊要求。

      在Struts framework中有很多地方可供擴展和定制。幾乎所有的配置類都能被替換為某個用戶定制的版本,這只要簡單的修改一下Struts的配置文件就可以做到。

      其他組件如ActionServlet和 RequestProcessor 也能用自定義的版本代替. 甚至連Struts 1.1里才有的新特性也是按照擴展的原則來設計的。例如,在異常處理機制中就允許用戶定制異常處理的句柄,以便更好的對應用系統發生的錯誤做出響應。

      作為框架的這種可調整特性在它更適合你的應用的同時也在很大的程度上影響了項目開發的效果。首先,由于您的應用是基于一個現有的成熟的、穩定的framework如Struts,測試過程中發現的錯誤數量將會大大減少,同時也能縮短開發時間和減少資源的投入。因為你不再需要投入開發力量用于編寫基礎框架的代碼了。

      然而, 實現更多的功能是要花費更大的代價的。我們必須小心避免不必要的濫用擴展性能, Struts是由核心包加上很多工具包構成的,它們已經提供了很多已經實現的功能。因此不要盲目的擴展Struts框架,要先確定能不能采用其他方法使用現有的功能來實現。 在決定編寫擴展代碼前務必要確認Struts的確沒有實現你要的功能。否則重復的功能會導致混亂將來還得花費額外的精力清除它。

      2. 使用異常處理聲明

      要定義應用程序的邏輯流程,成熟的經驗是推薦在代碼之外,用配置的方法來實現,而不是寫死在程序代碼中的。在J2EE中,這樣的例子比比皆是。從實現EJB的安全性和事務性行為到描述JMS消息和目的地之間的關系,很多運行時的處理流程都是可以在程序之外定義的。

      Struts 創建者從一開始就采用這種方法,通過配置Struts的配置文件來定制應用系統運行時的各個方面。這一點在版本1.1的新特性上得到延續,包括新的異常處理功能。在Struts framework以前的版本中,開發人員不得不自己處理Struts應用中發生的錯誤情況。在最新的版本中,情況大大的改觀了,Struts Framework提供了內置的一個稱為 ExceptionHandler 的類, 用于系統缺省處理action類運行中產生的錯誤。這也是在上一個技巧中我們提到的framework許多可擴展接口之一。

      Struts缺省的 ExceptionHandler類會生成一個ActionError對象并保存在適當的范圍(scope)對象中。這樣就允許JSP頁面使用錯誤類來提醒用戶出現什么問題。如果你認為這不能滿足你的需求,那么可以很方便的實現你自己的ExcepionHandler類。

      具體定制異常處理的方法和機制

      要定制自己的異常處理機制,第一步是繼承org.apache.struts.action.ExceptionHandler類。這個類有2個方法可以覆蓋,一個是excute()另外一個是storeException(). 在多數情況下,只需要覆蓋其中的excute()方法。下面是ExceptionHandler類的excute()方法聲明:


      正如你看到的,該方法有好幾個參數,其中包括原始的異常。方法返回一個ActionForward對象,用于異常處理結束后將controller類帶到請求必須轉發的地方去。

      當然您可以實現任何處理,但一般而言,我們必須檢查拋出的異常,并針對該類型的異常進行特定的處理。缺省的,系統的異常處理功能是創建一個出錯信息,同時把請求轉發到配置文件中指定的地方去。 定制異常處理的一個常見的例子是處理嵌套異常。假設該異常包含有嵌套異常,這些嵌套異常又包含了其他異常,因此我們必須覆蓋原來的execute()方法,對每個異常編寫出錯信息。

      一旦你創建了自己的ExceptionHandler 類,就應該在Struts配置文件中的部分聲明這個類,以便讓Struts知道改用你自定義的異常處理取代缺省的異常處理.

      可以配置你自己的ExceptionHandler 類是用于Action Mapping特定的部分還是所有的Action對象。如果是用于Action Mapping特定的部分就在元素中配置。如果想讓這個類可用于所有的Action對象,可以在 元素中指定。例如,假設我們創建了異常處理類CustomizedExceptionHandler用于所有的Action類, 元素定義如下所示:


      在元素中可以對很多屬性進行設置。在本文中,最重要的屬性莫過于handler屬性, handler屬性的值就是自定義的繼承了ExceptionHandler類的子類的全名。 假如該屬性沒有定義,Struts會采用自己的缺省值。當然,其他的屬性也很重要,但如果想覆蓋缺省的異常處理的話,handler無疑是最重要的屬性。

      最后必須指出的一點是,你可以有不同的異常處理類來處理不同的異常。在上面的例子中,CustomizedExceptionHandler用來處理任何java.lang.Exception的子類. 其實,你也可以定義多個異常處理類,每一個專門處理不同的異常樹。下面的XML片斷解釋了如何配置以實現這一點。


      在這里,一旦有異常拋出,struts framework將試圖在配置文件中找到ExceptionHandler,如果沒有找到,那么struts將沿著該異常的父類鏈一層層往上找直到發現匹配的為止。因此,我們可以定義一個層次型的異常處理關系結構,在配置文件中已經體現了這一點。
    Hold住
    主站蜘蛛池模板: 日本久久久久亚洲中字幕| 亚洲色大成网站WWW久久九九 | 四虎影视免费永久在线观看| 亚洲国产午夜精品理论片| 4444www免费看| 亚洲成无码人在线观看| 免费看男女下面日出水来| 亚洲啪啪免费视频| 青青青免费国产在线视频小草| 亚洲永久中文字幕在线| 免费国产作爱视频网站| 亚洲精品中文字幕无码A片老| 天天拍拍天天爽免费视频| 国产成人综合久久精品亚洲| 亚洲第一区精品日韩在线播放| 日韩精品无码永久免费网站| 精品国产亚洲一区二区三区 | 国产亚洲精品福利在线无卡一| h视频免费高清在线观看| 亚洲啪啪综合AV一区| 久久久久久毛片免费播放| 亚洲人成高清在线播放| 四虎1515hm免费国产| 97在线免费观看视频| 亚洲综合亚洲国产尤物| 四虎成人精品一区二区免费网站| 免费一区二区无码视频在线播放| 亚洲乱码精品久久久久..| 1000部拍拍拍18免费网站| 亚洲av无码一区二区三区四区| 中文字幕亚洲一区二区三区 | 成人性生交大片免费看中文| 337p日本欧洲亚洲大胆艺术| 好男人看视频免费2019中文 | 亚洲人成网站色7799| 亚洲婷婷国产精品电影人久久| 性色午夜视频免费男人的天堂| 亚洲hairy多毛pics大全| 亚洲人成影院在线无码按摩店| 国内精品乱码卡1卡2卡3免费| 永久免费无码日韩视频|