第9單元Struts2進階與提高_第1頁
第9單元Struts2進階與提高_第2頁
第9單元Struts2進階與提高_第3頁
第9單元Struts2進階與提高_第4頁
第9單元Struts2進階與提高_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第9Struts 29Struts 2進階與提高進階與提高Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥單元描述單元描述Struts 2完全顛覆了Web編程的傳統(tǒng),在Struts 2的Action類中,完全去掉了request、response等Servlet API。該框架提供了一整套用于簡化JSP編程的標簽,開發(fā)者只需要稍作配置就可以實現(xiàn)各種常用效果,該框架可以自動完成數(shù)據(jù)轉換、賦值,這些對Web編程是個革命性的轉變;Struts 2同樣提供配置式的數(shù)據(jù)校驗功能。本單元將重點介紹該框架在國際化、標簽庫、數(shù)據(jù)校驗等方面的技術。Java EEJava

2、EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥單元目標單元目標了解Struts 2標簽庫的配置和使用;了解Struts 2在國際化方面的實現(xiàn);熟悉Struts 2數(shù)據(jù)轉換和賦值的相關技術;掌握Struts 2數(shù)據(jù)校驗的功能;Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1任務任務1引入性案例引入性案例任務描述:任務描述:使用已經學過的有關Struts 2框架的知識,完成用戶注冊系統(tǒng)的開發(fā)。任務目標:任務目標:本案例的主要任務就是在當前知識體系結構的基礎上完成用戶注冊模塊的設計和實現(xiàn),并分析不足之處。Java EEJava EE框架技術

3、進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.1案例分析案例分析現(xiàn)在根據(jù)已學過的Struts 2的相關技術知識,對第7單元的引入性案例進行修改,完成用戶登錄模塊,相關需求分析與第7單元引入性案例相同。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥工程目錄結構圖工程目錄結構圖Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥運行效果運行效果Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.2設計步驟設計步驟(1)創(chuàng)建用戶注冊模塊的視圖界面:register.jsp、

4、registerSuccess.jsp;(2)創(chuàng)建資源信息文件:Aperties;(3)創(chuàng)建Action:RegisterAction.java;(4)為解決中文亂碼問題,創(chuàng)建過濾器Servelt:CharacterEncodingFilter.java;Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.2設計步驟設計步驟(5)創(chuàng)建配置文件web.xml;(6)配置struts.xml;(7)配置perties;(8)發(fā)布工程。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥

5、作者:趙彥9.1.3具體實現(xiàn)具體實現(xiàn)1創(chuàng)建用戶注冊模塊的視圖界面register.jsp、registerSuccess.jsp2創(chuàng)建資源信息文件:Aperties該文件的內容與第7單元的引入性案例(RegisterStruts工程)的Aperties文件內容相同,只是將其中“”、“”的文本刪除。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.3具體實現(xiàn)具體實現(xiàn)3創(chuàng)建Action:RegisterAction.java4為解決中文亂碼問題,創(chuàng)建過濾器Servelt:CharacterEncod

6、ingFilter.java該文件和之前提到的代碼相同,文件的配置也相同。5創(chuàng)建配置文件web.xml該文件的配置與第8單元的進階式案例中有關web.xml的配置相同,只是將默認歡迎頁面改為“register.jsp”。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.3具體實現(xiàn)具體實現(xiàn)6配置struts.xml7配置perties讓Struts 2框架識別資源配置文件的代碼為:“struts.custom.i18n.resources=Application”。8發(fā)布工程Java EEJava EE框架技術進階式教程框架技術進階

7、式教程 作者:趙彥作者:趙彥9.1.4Struts 2工作流程工作流程訪問注冊頁面訪問注冊頁面提交表單提交表單啟動啟動action處理處理數(shù)據(jù)數(shù)據(jù)Struts 2截獲截獲action請求請求查找查找web.xml找找到到Struts 2分發(fā)分發(fā)器器Filterstruts.xml配配置置action請求請求對應的對應的Action類,將提交的類,將提交的數(shù)據(jù)交給數(shù)據(jù)交給Action實例實例反射調用反射調用RegisterAction中的中的execute()方法方法跳轉到相應的跳轉到相應的JSP頁面顯示頁面顯示結果,并求其結果,并求其Action實例實例Java EEJava EE框架技術進階

8、式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(1)一個優(yōu)秀的注冊程序,)一個優(yōu)秀的注冊程序,不僅僅是輸入不僅僅是輸入用戶名和密碼用戶名和密碼,在較為嚴格的系統(tǒng)中需要錄在較為嚴格的系統(tǒng)中需要錄入極為豐富的數(shù)據(jù),為了方入極為豐富的數(shù)據(jù),為了方便用戶錄入,就需要各種控便用戶錄入,就需要各種控件幫助用戶完成錄入工作,件幫助用戶完成錄入工作,如單選按鈕、復選框、文件如單選按鈕、復選框、文件上傳按鈕、下拉框、日期選上傳按鈕、下拉框、日期選擇器等等。擇器等等。Struts 2豐富豐富的標簽庫可的標簽庫可以完成該項以完成該項工作工作Java EEJava EE框架技術進階式

9、教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(2)一個優(yōu)秀)一個優(yōu)秀產品是面向產品是面向國際的,因此支持國際化將國際的,因此支持國際化將是不容忽視的目標。是不容忽視的目標。Struts 2完全完全支持國際化支持國際化Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(3)由于)由于Struts 2完全放棄完全放棄了了ActionForm,但是由于,但是由于Java本身的缺陷,比如時間本身的缺陷,比如時間的表示方面等等,前臺表單的表示方面等等,前臺表單傳來的數(shù)據(jù),轉去給后臺傳來的數(shù)據(jù),轉去給后

10、臺Java處理時,數(shù)據(jù)類型的轉處理時,數(shù)據(jù)類型的轉換往往會加大程序員的工作換往往會加大程序員的工作量,那么量,那么Struts 2有沒有更有沒有更好的解決方案呢?好的解決方案呢?Struts 2內建的內建的類型轉換器可類型轉換器可以有效解決這以有效解決這類問題類問題Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(4)Struts 1的的Validator驗驗證框架可以有效解決數(shù)據(jù)校證框架可以有效解決數(shù)據(jù)校驗的問題,那么驗的問題,那么Struts 2如如何解決此類問題呢?何解決此類問題呢?Struts 2的的Validat

11、ion框架框架可以有效解決可以有效解決這類問題這類問題Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2任務任務2Struts 2標簽庫標簽庫任務描述:任務描述:與Struts 1一樣,Struts 2也提供了大量的標簽,Struts 2的標簽庫用于簡化JSP編程,開發(fā)者只需要在標簽中做少量配置,就可以實現(xiàn)各種常見效果。Struts 2標簽與Action聯(lián)系比較緊密,使用標簽后,Struts 2會自動完成JSP層的顯示數(shù)據(jù)、在Action層采集數(shù)據(jù)等工作。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2任務任

12、務2Struts 2標簽庫標簽庫任務目標:任務目標:Struts 2提供了大量Struts 1中沒有的標簽,如日期選擇器、樹形結構、主題、模板等,同時Struts 2還提供了對DWR技術、AJAX技術的支持,使Struts 2可以完成各種AJAX的效果。該任務的主要目標就是認識和了解Struts 2標簽。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2.1Struts 2標簽分類標簽分類Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2.2表單標簽表單標簽Struts 2中所有的表單處理類都繼承于org.ap

13、ache.Struts ponents.UIBean類,在該類中定義了一些通用屬性,這些屬性在所有的表單標簽中都存在,感興趣的讀者可以閱讀UIBean類的源代碼。在UIBean類中定義的通用屬性可分為模板相關屬性、JavaScript相關屬性、tooltip相關屬性、通用屬性四大來。課本200頁表9-1到9-4分別對這四大類通用屬性進行了詳細描述。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2.3非表單標簽非表單標簽非表單標簽主要用于生成一些非可視化的元素,或根據(jù)服務端的處理結果顯示一些信息。如div、actionerror等。表9-6給出了Str

14、uts 2的非表單標簽的名稱和使用說明。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2.4控制標簽控制標簽Struts 2的非UI標簽包括控制標簽和數(shù)據(jù)標簽。其中控制標簽主要完成條件邏輯、循環(huán)邏輯的控制,以及對集合的合并、排序等操作??刂茦撕炗?個,其名稱和功能描述如表9-7所示。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.2.5數(shù)據(jù)標簽數(shù)據(jù)標簽數(shù)據(jù)標簽主要用于提供各種和數(shù)據(jù)訪問相關的功能,如創(chuàng)建一個類的對象實例、輸出國際化信息、包括其它的Web資源等。數(shù)據(jù)標簽的名稱和使用說明如表9-8所示。Java

15、EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.3任務任務3Struts 2國際化國際化任務描述:任務描述:Struts 2的國際化功能做得相當出色。在Struts 2中可以讀取資源文件中的國際化信息,并可以將這些國際化信息應用到不同的地方,如數(shù)據(jù)校驗、數(shù)據(jù)類型轉換等的出錯信息,JSP頁面的國際化信息等。任務目標:任務目標:如何使用Struts 2框架解決程序的國際化問題就是該任務的主要目標。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.3.1Struts 2中的全局資源文件中的全局資源文件假設全局資源文件的baseN

16、ame為Application,則在perties文件中可以通過如下代碼設置。struts.custom.i18n.resources=Application在struts.xml文件中配置struts.custom.i18n.resources常量可以通過如下代碼完成。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.3.2在在Struts 2中訪問國際化信息中訪問國際化信息(1)使用標簽在JSP頁面中直接輸出國際化信息。(2)使用表單標簽輸出國際化信息,如、。(3)如果Action類從ActionSupport類繼承,可以通過Ac

17、tionSupport類的getText()方法來返回資源文件中的國際化信息。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.3.3對引入性案例實現(xiàn)國際化對引入性案例實現(xiàn)國際化實例實例1:在引入性案例的基礎上進行修改,將其實現(xiàn)國際化。(1)7.3.2節(jié)創(chuàng)建了Application_en_US.properties文件和Application_zh_CN.properties文件,將這兩個文件復制到引入性案例的“src”路徑下,并刪除這兩個文件中的“”和“”標記。(2)保存后重新發(fā)布工程。Java EEJava EE框架技術進階式教程框架技術進階式教程

18、作者:趙彥作者:趙彥9.3.3對引入性案例實現(xiàn)國際化對引入性案例實現(xiàn)國際化Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4任務任務4數(shù)據(jù)類型轉換器數(shù)據(jù)類型轉換器任務描述:任務描述:用戶錄入的信息通過網頁進行收集,不管是什么類型,都是以字符串的形式提交給服務端。Java是強類型語言,想要接受客戶端提交的信息,就必須將這些信息轉換成相應的Java數(shù)據(jù)類型。在傳統(tǒng)的Web系統(tǒng)中,這些工作必須由開發(fā)人員自己完成,如果使用了MVC框架,那么數(shù)據(jù)類型轉換的工作可以由MVC框架代替。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:

19、趙彥9.4任務任務4數(shù)據(jù)類型轉換器數(shù)據(jù)類型轉換器任務目標:任務目標:Struts 2提供了強大的類型轉換機制。Struts 2的類型轉換是基于OGNL表達式的。只要HTML表單元素(文本框、選擇框等)的name屬性按照OGNL的規(guī)則命名,提交后,系統(tǒng)那個就會將提交的數(shù)據(jù)轉換成Java相應的數(shù)據(jù)類型。該任務的目標即使學習Struts 2框架在數(shù)據(jù)類型轉換方面的技術。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉換傳統(tǒng)的類型轉換在傳統(tǒng)的Web程序中,非字符串類型的信息需要手工將其轉換成相應的Java數(shù)據(jù)類型。例如年齡需要轉換成整數(shù)類型數(shù)

20、據(jù),生日需要轉換成日期類型數(shù)據(jù)。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉換傳統(tǒng)的類型轉換實例實例2:如果在注冊信息中存在年齡和生日相關信息,請給出相應的數(shù)據(jù)類型轉換的解決方案。(1)假設在服務器端將注冊信息封裝在UserBean類中;年齡:age 整型 生日: birthday 日期型(2)首先對age、birthday請求參數(shù)進行類型轉換后,之后才能賦值;Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉換傳統(tǒng)的類型轉換(3)在相應的Servlet程序中,通過requ

21、est獲取age的請求信息;(4)在相應的Servlet程序中,通過request獲取birthday的請求信息。以上解決問題的方案雖以上解決問題的方案雖然可以完成數(shù)據(jù)類型轉換的然可以完成數(shù)據(jù)類型轉換的任務,但是需要手工編寫大任務,但是需要手工編寫大量代碼。那么基于量代碼。那么基于MVC架架構的構的Struts 2框架優(yōu)勢如何實框架優(yōu)勢如何實現(xiàn)數(shù)據(jù)類型轉換的呢?現(xiàn)數(shù)據(jù)類型轉換的呢?Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.2Struts 2內建的類型轉換器內建的類型轉換器在Struts 2框架中提供了強大的類型轉換機制,開發(fā)人員可以使用Str

22、uts 2的這個機制來進行任意復雜的數(shù)據(jù)類型轉換。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.3其它轉換方式其它轉換方式雖然在Struts 2中可以自動將簡單類型、數(shù)組和集合類型,但是在實際應用中還是不夠的。在Struts 2中,可以通過編寫基于OGNL的類型轉換器來完成基于類數(shù)據(jù)的轉換任務。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.3其它轉換方式其它轉換方式Struts 2默認的轉換器并不總能滿足需要。例如,輸入時間,Struts 2只能轉換形如12:00:00的格式,如果輸入12:00就會

23、報錯。也有一些數(shù)據(jù)類型Struts轉換不了。因此需要自定義數(shù)據(jù)轉換器。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.3其它轉換方式其它轉換方式實例實例3:自定義一個日期時間轉換器,用于接收各種常用的時間格式。(1)所用知識點的簡介。(2)創(chuàng)建名為“DateConvertor”的工程。該工程中最重要的類就是實現(xiàn)日期時間數(shù)據(jù)轉換的DateTimeConvertor.java,其代碼如下。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.3其它轉換方式其它轉換方式(3)轉換器的配置在xwork-convers

24、perties中,該文件的代碼如下。(4)該實例的目標是實現(xiàn)3種日期類型在DateTimeConvertorAction類中進行轉換,轉換器的調用對Action而言是透明的,轉換器Action類為“ConvertorAction.java”,代碼如下。(5)struts.xml的配置,代碼如下。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.4.3其它轉換方式其它轉換方式(6)web.xml文件的配置代碼如下。(7)用戶界面包括convert.jsp和convertSuccess.jsp,文件代碼如下。(8)運行結果如圖9-10、9-11

25、所示。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5任務任務5數(shù)據(jù)校驗數(shù)據(jù)校驗任務描述:任務描述:在Struts 2中同時提供了客戶端和服務器端校驗機制。Struts 2中的客戶端校驗也是采用了JavaScript,但是這些JavaScript代碼是由Struts 2自動添加的。而Struts 2的服務端校驗位開發(fā)人員提供了多種選擇,如validate方法、Validation框架等。除此之外,開放性的Struts 2框架還允許開發(fā)人員編寫自定義的校驗器。任務目標:任務目標:本任務目標是了解并學會使用Struts 2框架的數(shù)據(jù)驗證方法。Java E

26、EJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進行數(shù)據(jù)校驗方法進行數(shù)據(jù)校驗(1)引入性案例是通過用戶自己編寫的函數(shù)實現(xiàn)了數(shù)據(jù)校驗功能。(2)Struts 2框架提供了兩個和校驗有關的接口,分別是Validateable和ValidationAware,Validateable接口存在唯一一個validate()方法。Struts 2框架在調用Action的execute()之前,會自動調用validate()方法。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.1使用使用valida

27、te方法進行數(shù)據(jù)校驗方法進行數(shù)據(jù)校驗(3)但是validate()方法沒有返回值,這就意味著無法通過validate()方法的返回值來驗證輸入數(shù)據(jù)是否通過Struts 2的校驗。此時需要使用另外一個校驗感知接口ValidationAware。該接口中存放了一系列的addXXX()方法,這些方法可以將校驗過程中發(fā)生的錯誤信息添加到系統(tǒng)中,實際上是添加到一個Map對象中。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進行數(shù)據(jù)校驗方法進行數(shù)據(jù)校驗(4)為此Struts 2在提供了ActionSupport類,實現(xiàn)了這兩個接

28、口。用于完成數(shù)據(jù)校驗。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進行數(shù)據(jù)校驗方法進行數(shù)據(jù)校驗實例實例4:在本單元實例1的基礎上對RegisterStruts2工程進行修改,使其通過validate方法完成數(shù)據(jù)校驗。對RegisterAction類進行修改,修改后的代碼如下,運行結果和實例1相同。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validation框架進行數(shù)據(jù)校驗框架進行數(shù)據(jù)校驗validate()方法可以完成數(shù)據(jù)校驗,但仍需要編寫大量代碼,而

29、且代碼復用率不高。Struts 2提供了Validation校驗框架,通過該框架,只需要在配置文件中配置要校驗的字段和校驗規(guī)則,就可以對相應的字段進行校驗。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validation框架進行數(shù)據(jù)校驗框架進行數(shù)據(jù)校驗實例實例5:在本單元實例4的基礎上繼續(xù)對RegisterStruts2工程進行修改,使其通過Validation框架完成數(shù)據(jù)校驗。(1)對Action類進行修改,刪除其中的數(shù)據(jù)校驗方法。(2)在RegisterAction類所在路徑下創(chuàng)建名為RegisterAction-validation.xml的配置文件。Java EEJava EE框架技術進階式教程框架技術進階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validati

溫馨提示

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

評論

0/150

提交評論