亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

運用Jakarta Struts的七大實戰心法解析

2019-11-18 12:54:28
字體:
來源:轉載
供稿:網友

  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()方法。
  
  正如你看到的,該方法有好幾個參數,其中包括原始的異常。方法返回一個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將沿著該異常的父類鏈一層層往上找直到發現匹配的為止。因此,我們可以定義一個層次型的異常處理關系結構,在配置文件中已經體現了這一點。
  
  3、使用應用模塊(application Modules)
  
  Struts 1.1的一個新特性是應用模塊的概念。應用模塊答應將單個Struts應用劃分成幾個模塊,每個模塊有自己的Struts配置文件,JSP頁面,Action等等。這個新特性是為了解決大中型的開發隊伍抱怨最多的一個問題,即為了更好的支持并行開發答應多個配置文件而不是單個配置文件。
  
  注:在早期的beta版本中,該特性被稱為子應用(sub-applications),最近的改名目的是為了更多地反映它們在邏輯上的分工。
  
  顯然,當很多開發人員一起參加一個項目時,單個的Struts配置文件很輕易引起資源沖突。應用模塊答應Struts按照功能要求進行劃分,許多情況已經證實這樣更貼近實際。例如,假設我們要開發一個典型的商店應用程序。
  
  可以將組成部分劃分成模塊比如catalog(商品目錄),customer(顧客),customer service(顧客服務),order(訂單)等。每個模塊可以分布到不同的目錄下,這樣各部分的資源很輕易定位,有助于開發和部署。
  
  注:假如你無需將項目劃分成多個模塊,Struts框架支持一個缺省的應用模塊。這就使得應用程序也可以在1.0版本下創建,具有可移植性,因為應用程序會自動作為缺省的應用模塊。
  
  為了使用多應用模塊功能,必須執行以下幾個預備步驟:
  
  為每個應用模塊創建獨立的Struts配置文件。
  
  配置Web 部署描述符 Web.xml文件。
  
  使用org.apache.struts.actions.SwitchAction 來實現程序在模塊之間的跳轉。
  
  創建獨立的Struts配置文件
  
  每個Struts應用模塊必須擁有自己的配置文件。答應創建自己的獨立于其他模塊的Action,ActionForm,異常處理甚至更多。
  
  繼續以上面的商店應用程序為例,我們可以創建以下的配置文件:一個文件名為struts-config-catalog.xml,包含catalog(商品目錄)、items(商品清單)、和其它與庫存相關的功能的配置信息;另一個文件名為struts- config-order.xml,包含對order(訂單)和order tracking(訂單跟蹤)的設置。第三個配置文件是struts-config.xml,其中含有屬于缺省的應用模塊中的一般性的功能。
  
  配置Web部署描述符
  
  在Struts的早期版本中,我們在Web.xml中指定Struts配置文件的路徑。好在這點沒變,有助于向后兼容。但對于多個應用模塊,我們需要在Web部署描述符中增加新的配置文件的設定。
  
  對于缺省的應用(包括Struts的早期版本),Struts framework 在Web.xml文件中查找帶有config的元素,用于載入Action mapping 和其它的應用程序設定。
  
  注:假如在現有的元素中找不到"config"要害字,Struts framework將缺省地使用/WEB/struts-config.xml
  
  為了支持多個應用模塊(Struts 1.1的新特性),必須增加附加的元素。與缺省的元素不同的是,附加的元素與每個應用模塊對應,必須以config/xxx的形式命名,其中字符串xxx代表該模塊唯一的名字。例如,在商店應用程序的例子中,元素可定義如下(注重粗體字部分):
  
  第一個 元素對應缺省的應用模塊。第二和第三個元素分別代表非缺省應用模塊catalog 和 order。
  
  當Struts載入應用程序時,它首先載入缺省應用模塊的配置文件。然后查找帶有字符串config/xxx 形式的附加的初始化參數。對每個附加的配置文件也進行解析并載入內存。這一步完成后,用戶就可以很隨意地用config/后面的字符串也就是名字來調用相應的應用模塊。
  
  多個應用模塊之間調用Action類
  
  在為每個應用模塊創建獨立的配置文件之后,我們就有可能需要調用不同的模塊中Action。為此必須使用Struts框架提供的SwitchAction類。Struts會自動將應用模塊的名字添加到URL,就如Struts自動添加應用程序的名字加到URL一樣。
  
  應用模塊是對框架的一個新的擴充,有助于進行并行的團隊開發。假如

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
正在播放国产一区| 亚洲欧美www| 欧美俄罗斯乱妇| 亚洲欧美国内爽妇网| 国产精品丝袜高跟| 成人福利在线视频| 日韩国产激情在线| 亚洲天堂视频在线观看| 按摩亚洲人久久| 久久久久国产精品一区| 美女国内精品自产拍在线播放| 久久久精品久久久久| 国产精品一区二区三区在线播放| 国产精品免费看久久久香蕉| 成人在线视频网站| 秋霞成人午夜鲁丝一区二区三区| 清纯唯美日韩制服另类| 日韩欧美综合在线视频| 亚洲在线免费观看| 精品国产91久久久久久| 欧美猛少妇色xxxxx| 91九色在线视频| 操日韩av在线电影| 欧美成人国产va精品日本一级| 国产综合视频在线观看| 国产精品久久久久免费a∨大胸| 欧美黄色片视频| 国产色婷婷国产综合在线理论片a| 欧美黑人视频一区| 国产精品亚发布| 亚洲第一色在线| 国产视频精品自拍| 九九久久久久久久久激情| 亚洲国产精品电影| 国产福利精品在线| 国产精品视频精品| 96sao精品视频在线观看| 欧美精品激情blacked18| 亚洲一区二区三区sesese| 亚洲va久久久噜噜噜久久天堂| 日韩性生活视频| 国产一区二区三区日韩欧美| 欧美色xxxx| 深夜福利亚洲导航| 欧美性资源免费| 欧美在线一区二区视频| 精品magnet| 黑人精品xxx一区一二区| 91国产精品视频在线| 日韩美女在线观看| 欧美中在线观看| 欧美成人免费全部观看天天性色| 欧美巨猛xxxx猛交黑人97人| 91久久精品国产91久久性色| 亚洲欧美国产日韩天堂区| 91国偷自产一区二区三区的观看方式| 国产精品美女视频网站| 免费av在线一区| 欧美国产亚洲精品久久久8v| 日韩一区二区欧美| 久久中文字幕国产| 国产精品一区二区三区成人| 欧美高跟鞋交xxxxxhd| 亚洲国产欧美一区二区三区同亚洲| 欧美日韩激情视频8区| 日本在线观看天堂男亚洲| 欧美人在线视频| 欧美做爰性生交视频| 一区二区三区视频在线| 欧美亚洲伦理www| 91在线免费网站| 亚洲视频网站在线观看| 国产91精品高潮白浆喷水| 这里只有精品久久| 亚洲成人a级网| 国产亚洲精品综合一区91| 欧美有码在线观看| 亚洲美女福利视频网站| 成人性教育视频在线观看| 动漫精品一区二区| 亚洲激情久久久| 国产精国产精品| 北条麻妃一区二区在线观看| 亚洲一区av在线播放| 亚洲精品成a人在线观看| 日韩欧美亚洲一二三区| 亚洲视频在线视频| 欧美精品videos性欧美| 中文字幕日韩在线观看| 久久最新资源网| 国产精品尤物福利片在线观看| 亚洲美女av黄| 欧美成人免费全部观看天天性色| 26uuu另类亚洲欧美日本老年| 精品亚洲精品福利线在观看| 久久99国产精品久久久久久久久| 91欧美精品成人综合在线观看| 欧美午夜精品久久久久久人妖| 亚洲大胆人体在线| 欧美日韩亚洲激情| 亚洲最大福利网| 久久久久久噜噜噜久久久精品| 中文字幕亚洲一区二区三区五十路| 国产精品久久久999| 国产精品精品一区二区三区午夜版| 亚洲精品日产aⅴ| 97超级碰碰人国产在线观看| 国产69久久精品成人看| 国产亚洲美女久久| 精品无人区乱码1区2区3区在线| 久久久精品免费视频| 久久精品99久久久久久久久| 欧美精品xxx| 亚洲综合日韩在线| 国产精品视频网| 青草成人免费视频| 91精品国产高清久久久久久91| 色狠狠久久aa北条麻妃| 欧美另类精品xxxx孕妇| 国产精品亚洲激情| 日本免费久久高清视频| 欧美午夜片在线免费观看| 7777精品久久久久久| 久久99久国产精品黄毛片入口| 国产在线精品自拍| 亚洲精品网站在线播放gif| 欧美裸体男粗大视频在线观看| 亚洲一区二区福利| 91精品久久久久久久久久入口| 国产精品亚洲自拍| 神马久久桃色视频| 日韩中文字幕网站| 亚洲福利影片在线| 夜夜躁日日躁狠狠久久88av| 精品国产一区二区三区久久狼5月| 538国产精品一区二区免费视频| 欧美一级大片视频| 92国产精品久久久久首页| 91精品啪aⅴ在线观看国产| 欧美激情精品久久久久久大尺度| 69视频在线免费观看| 国产精品电影在线观看| 懂色av影视一区二区三区| 亚洲社区在线观看| 欧美黄网免费在线观看| 亚洲国产精品女人久久久| 97碰碰碰免费色视频| 不用播放器成人网| 在线观看国产精品日韩av| 国产99久久精品一区二区 夜夜躁日日躁| 欧美激情亚洲另类| 一区二区在线视频播放| 亚洲一区二区久久久久久久| 欧美极品少妇与黑人| 2019中文字幕免费视频| 成人中文字幕+乱码+中文字幕| 亚洲国产91精品在线观看| 日韩最新在线视频| 国产精品扒开腿做爽爽爽视频| 成人av在线天堂| 成人免费观看49www在线观看| 久久久人成影片一区二区三区观看| 韩国视频理论视频久久| 久久精品国产69国产精品亚洲|