Struts應(yīng)用技術(shù)深入(2).ppt_第1頁(yè)
Struts應(yīng)用技術(shù)深入(2).ppt_第2頁(yè)
Struts應(yīng)用技術(shù)深入(2).ppt_第3頁(yè)
Struts應(yīng)用技術(shù)深入(2).ppt_第4頁(yè)
Struts應(yīng)用技術(shù)深入(2).ppt_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在本講您能了解如下知識(shí)點(diǎn) 擴(kuò)展Struts以開(kāi)發(fā)Struts的插件 多個(gè)表單對(duì)應(yīng)一個(gè)ActionForm類 DynaActionForm類技術(shù) 對(duì)DynaActionForm類進(jìn)行定制 如何處理包含日期類型表單 Struts中的異常處理機(jī)制 DispatchAction類的使用,Strust應(yīng)用技術(shù)深入(2),1、擴(kuò)展Struts系統(tǒng),(1)Struts的可擴(kuò)展性 由于在實(shí)際應(yīng)用中,一定會(huì)有一些特定的應(yīng)用需求是框架的設(shè)計(jì)者們無(wú)法預(yù)見(jiàn)到的,因此框架的設(shè)計(jì)者則應(yīng)該允許框架使用者對(duì)框架進(jìn)行擴(kuò)展 (2)擴(kuò)展Struts系統(tǒng)的幾種方式 PlugIn技術(shù):如果我們想在Web應(yīng)用啟動(dòng)或終止的時(shí)候做一些業(yè)務(wù)邏

2、輯的話,那就創(chuàng)建我們自己的PlugIn類。 繼承RequestProcessor類,可以實(shí)現(xiàn)對(duì)請(qǐng)求進(jìn)行驗(yàn)證,從而可以代替Filter的功能,繼承ActionServlet類,2、開(kāi)發(fā)Struts的插件實(shí)現(xiàn)擴(kuò)展Struts,(1)Struts插件 Struts提供了一個(gè)PlugIn接口,利用用它來(lái)創(chuàng)建在Web應(yīng)用啟動(dòng)時(shí)就需要的初始化定制服務(wù)。,(2)應(yīng)用的場(chǎng)合 當(dāng)希望所擴(kuò)展的功能能夠與Struts系統(tǒng)平臺(tái)融合在一起,并且在容器啟動(dòng)時(shí)就希望加載該擴(kuò)展的組件,可以實(shí)現(xiàn)對(duì)請(qǐng)求進(jìn)行一般的轉(zhuǎn)換,從而也可以代替Filter的功能,(3)Struts插件的類型 第三方的Struts插件,用戶自定義的 Stru

3、ts插件,(4)Plugin接口說(shuō)明-init() 和destory()方法,(5)插件的生命周期方法的執(zhí)行過(guò)程 在struts應(yīng)用程序啟動(dòng)的時(shí)候,ActionServlet通過(guò)init()方法實(shí)例每一個(gè)Plugin。 可以在init()方法中放一些需要初始化的東西。 對(duì)于destory()方法它將在你的應(yīng)用程序結(jié)束時(shí)調(diào)用,(6)編程Struts插件的Java類步驟 編程Java類-請(qǐng)見(jiàn)文檔示例 在struts-config.xml中部署該plugin插件, ,(7)標(biāo)簽中的子標(biāo)簽 通過(guò)使用Struts的另外一個(gè)特征,即set-property元素,你可以將特殊的信息傳遞到plug-in中。

4、這種能力增強(qiáng)了這些類的靈活性,(8)Plugin插件的應(yīng)用實(shí)例:在Web應(yīng)用中的公共參數(shù)的問(wèn)題,詳細(xì)的實(shí)現(xiàn)細(xì)節(jié)請(qǐng)見(jiàn)文檔。,2、創(chuàng)建和多個(gè)表單相對(duì)應(yīng)的ActionForm,(2)目的 減少ActionForm 組件的個(gè)數(shù),從而避免重復(fù)單調(diào)地編程;因?yàn)槎鄠€(gè)表單可能會(huì)有重復(fù)的數(shù)據(jù)項(xiàng)目-如在用戶登錄表單和注冊(cè)表單中都包含有“用戶名稱”和“密碼項(xiàng)目”。 (3)所應(yīng)該解決的問(wèn)題 如何在ActionForm組件中識(shí)別當(dāng)前是那個(gè)表單在產(chǎn)生提交,從而對(duì)與該表單相對(duì)應(yīng)的數(shù)據(jù)項(xiàng)目進(jìn)行validate()操作。,(1)頁(yè)面中的Form表單與ActionForm之間的對(duì)應(yīng)關(guān)系 一般可以為每個(gè)表單提供一個(gè)ActionFo

5、rm(一對(duì)一) 當(dāng)然也可以為多個(gè)不同的表單提供一個(gè)共同的ActionForm組件(一對(duì)多),(4)解決的方法 通過(guò)在每個(gè)表單中放入一個(gè)hidden字段來(lái)標(biāo)示,(5)該方法的基本原理 在html的表單中提供了控件,利用它進(jìn)行傳遞數(shù)據(jù); 因?yàn)?,每?dāng)表單進(jìn)行提交時(shí),其數(shù)據(jù)值也會(huì)傳遞到服務(wù)器端。這樣我們只需要識(shí)別該字段得值,也就了解了是那個(gè)表單提交,您知道該表單域有什么特點(diǎn)嗎?,3、DynaActionForm類(虛擬ActionForm技術(shù)),(1)ActionForm類的主要作用 利用ActionForm類來(lái)包裝HTML表單中的數(shù)據(jù),從而以面向?qū)ο蟮姆绞竭M(jìn)行表單的數(shù)據(jù)操作 同時(shí)還可以在Action

6、Form類中通過(guò)重寫(xiě)reset和validate方法以實(shí)現(xiàn)對(duì)表示層表單中的用戶輸入的數(shù)據(jù)進(jìn)行復(fù)位和驗(yàn)證,(2)ActionForm類及其所存在的問(wèn)題 對(duì)于大型的Struts Web應(yīng)用項(xiàng)目,由于有大量的表單存在,從而需要針對(duì)每一個(gè)表單設(shè)計(jì)出對(duì)應(yīng)的ActionForm類組件-最終會(huì)產(chǎn)生大量的表單對(duì)象! 另外它與表單相綁定,因此如果在HTML表單中的某一字段發(fā)生變化,則必須修改并重新編譯對(duì)應(yīng)的ActionForm組件類。,(3)解決的方法 為了減少編程實(shí)現(xiàn)所帶來(lái)的不靈活性和減少表單與ActionForm組件之間的藕合性,Struts系統(tǒng)中提供了DynaActionForm類技術(shù),(4)DynaAc

7、tionForm類的基本原理 DynaActionForm類(它是ActionForm類的子類),因此保留了原來(lái)的ActionForm類的所有功能 創(chuàng)建的方法 在struts-config.xml配置文件中針對(duì)每一個(gè)HTML表單以配置的方式配置出所需的虛擬ActionForm組件,(5)配置實(shí)現(xiàn)虛擬ActionForm的主要步驟 配置一個(gè)標(biāo)簽元素并將其type屬性數(shù)值為DynaActionForm類或者它的某個(gè)子類 在標(biāo)簽元素內(nèi)針對(duì)HTML表單中的每個(gè)字段提供一個(gè)標(biāo)簽元素以聲明該字段的名稱和數(shù)據(jù)類型 通過(guò)在標(biāo)簽中提供initial屬性來(lái)為每個(gè)字段提供初始值,(6)在Action類中獲得屬性字段

8、的值,與ActionForm的訪問(wèn)方法不同點(diǎn) 如果使用DynaActionForm,系統(tǒng)將各個(gè)屬性成員保存在一個(gè)HashMap類對(duì)象中 因此應(yīng)該采用get(“name”)和set(“name”)方法來(lái)訪問(wèn)成員屬性(其中參數(shù)name是要訪問(wèn)的HTML表單中的屬性名),示例代碼,(1)技術(shù)背景 采用了DynaActionForm類后,由于不再存在了具體的組件類代碼,因此也無(wú)法再提供reset()和validate()方法 從而也喪失了原來(lái)在ActionForm中的對(duì)表單中的數(shù)據(jù)提供的驗(yàn)證手段 (2)解決的方法 為了既能夠減少對(duì)ActionForm組件的編程,同時(shí)也還能夠繼續(xù)提供數(shù)據(jù)驗(yàn)證,可以采用對(duì)

9、DynaActionForm類進(jìn)行定制,4、對(duì)DynaActionForm類進(jìn)行定制,(4)代碼示例,(3)實(shí)現(xiàn)的步驟 編程實(shí)現(xiàn)自己的DynaActionForm類并重寫(xiě)reset方法 同時(shí)也重寫(xiě)validate()方法以編程實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證 在struts-config.xml文件中的標(biāo)簽中配置指定自己的DynaActionForm類,(5)在struts-config.xml文件中的標(biāo)簽中配置指定自己的DynaActionForm類,6、DispatchAction類的使用 (1)其作用 主要是用于分發(fā)的Action;其主要的好處是把一些功能類似的Action放到一個(gè)Action類中,從而減少

10、Action類的個(gè)數(shù)。 (2)org.apache.struts.actions.DispatchAction類,注意它也是從Action類繼承,(3)實(shí)現(xiàn)的方法(參考UserLogin) 設(shè)計(jì)一個(gè)表示層頁(yè)面,設(shè)計(jì)完成上面的兩個(gè)功能的DispatchAction類,在struts-config.xml文件中進(jìn)行DispatchAction類的配置,執(zhí)行該Web應(yīng)用,注意methodName與前面的URL中的參數(shù)名稱相同,7、Struts中的異常處理機(jī)制和技術(shù),(1)Java語(yǔ)言中的異常處理 系統(tǒng)級(jí)異常-與應(yīng)用的邏輯無(wú)關(guān),需要由系統(tǒng)平臺(tái)提供商的開(kāi)發(fā)者來(lái)處理該類異常 應(yīng)用級(jí)異常-由于用戶違背了商業(yè)

11、業(yè)務(wù)邏輯而導(dǎo)致的錯(cuò)誤,這種錯(cuò)誤一般不是致命的,(2)異常處理的基本原則 要注意不要讓用戶看到原始的Java異常信息,對(duì)此原則在前面的Web編程技術(shù)時(shí)也已經(jīng)提及!,可以將原始的Java異常信息記錄到日志文件中,在控制層或者表示層的組件中捕獲用戶自定義的異常,您覺(jué)得這樣的方式有什么問(wèn)題嗎?,(3)在Struts的Web系統(tǒng)中異常處理的方式 編程方式進(jìn)行異常處理 對(duì)于異常的處理,主要是采用try/catch等等捕獲異常,然后定制個(gè)性化的比較詳細(xì)的錯(cuò)誤信息放進(jìn)ActionError中,然后在具體的返回頁(yè)面中把這些錯(cuò)誤信息反饋給用戶(包括開(kāi)發(fā)員)。,不可避免地會(huì)產(chǎn)生硬編碼的后果,增強(qiáng)了與錯(cuò)誤信息的藕合度,以配置的方式進(jìn)行異常處理 要定義應(yīng)用程序的邏輯流程,成熟的經(jīng)驗(yàn)是推薦在代碼之外,用配置的方法來(lái)實(shí)現(xiàn),而不是硬編碼地方式寫(xiě)死在程序代碼中的 此種方法在對(duì)錯(cuò)誤的信息、跳轉(zhuǎn)的目標(biāo)地址和錯(cuò)誤處理的頁(yè)面等方面都具有較好的靈活度,(4)創(chuàng)建用戶的自己異常處理類 目的:定制個(gè)性化的比較詳細(xì)的錯(cuò)誤信息,(5)與異常設(shè)置相關(guān)的標(biāo)簽-全局異常的設(shè)置 對(duì)所有的Action都可以適用,示例代碼:請(qǐng)見(jiàn)文檔,(6)與異

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論