




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第9Struts 29Struts 2進(jìn)階與提高進(jìn)階與提高Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥單元描述單元描述Struts 2完全顛覆了Web編程的傳統(tǒng),在Struts 2的Action類中,完全去掉了request、response等Servlet API。該框架提供了一整套用于簡化JSP編程的標(biāo)簽,開發(fā)者只需要稍作配置就可以實(shí)現(xiàn)各種常用效果,該框架可以自動(dòng)完成數(shù)據(jù)轉(zhuǎn)換、賦值,這些對(duì)Web編程是個(gè)革命性的轉(zhuǎn)變;Struts 2同樣提供配置式的數(shù)據(jù)校驗(yàn)功能。本單元將重點(diǎn)介紹該框架在國際化、標(biāo)簽庫、數(shù)據(jù)校驗(yàn)等方面的技術(shù)。Java EEJava
2、EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥單元目標(biāo)單元目標(biāo)了解Struts 2標(biāo)簽庫的配置和使用;了解Struts 2在國際化方面的實(shí)現(xiàn);熟悉Struts 2數(shù)據(jù)轉(zhuǎn)換和賦值的相關(guān)技術(shù);掌握Struts 2數(shù)據(jù)校驗(yàn)的功能;Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1任務(wù)任務(wù)1引入性案例引入性案例任務(wù)描述:任務(wù)描述:使用已經(jīng)學(xué)過的有關(guān)Struts 2框架的知識(shí),完成用戶注冊(cè)系統(tǒng)的開發(fā)。任務(wù)目標(biāo):任務(wù)目標(biāo):本案例的主要任務(wù)就是在當(dāng)前知識(shí)體系結(jié)構(gòu)的基礎(chǔ)上完成用戶注冊(cè)模塊的設(shè)計(jì)和實(shí)現(xiàn),并分析不足之處。Java EEJava EE框架技術(shù)
3、進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.1案例分析案例分析現(xiàn)在根據(jù)已學(xué)過的Struts 2的相關(guān)技術(shù)知識(shí),對(duì)第7單元的引入性案例進(jìn)行修改,完成用戶登錄模塊,相關(guān)需求分析與第7單元引入性案例相同。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥工程目錄結(jié)構(gòu)圖工程目錄結(jié)構(gòu)圖Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥運(yùn)行效果運(yùn)行效果Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.2設(shè)計(jì)步驟設(shè)計(jì)步驟(1)創(chuàng)建用戶注冊(cè)模塊的視圖界面:register.jsp、
4、registerSuccess.jsp;(2)創(chuàng)建資源信息文件:Aperties;(3)創(chuàng)建Action:RegisterAction.java;(4)為解決中文亂碼問題,創(chuàng)建過濾器Servelt:CharacterEncodingFilter.java;Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.2設(shè)計(jì)步驟設(shè)計(jì)步驟(5)創(chuàng)建配置文件web.xml;(6)配置struts.xml;(7)配置perties;(8)發(fā)布工程。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥
5、作者:趙彥9.1.3具體實(shí)現(xiàn)具體實(shí)現(xiàn)1創(chuàng)建用戶注冊(cè)模塊的視圖界面register.jsp、registerSuccess.jsp2創(chuàng)建資源信息文件:Aperties該文件的內(nèi)容與第7單元的引入性案例(RegisterStruts工程)的Aperties文件內(nèi)容相同,只是將其中“”、“”的文本刪除。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.3具體實(shí)現(xiàn)具體實(shí)現(xiàn)3創(chuàng)建Action:RegisterAction.java4為解決中文亂碼問題,創(chuàng)建過濾器Servelt:CharacterEncod
6、ingFilter.java該文件和之前提到的代碼相同,文件的配置也相同。5創(chuàng)建配置文件web.xml該文件的配置與第8單元的進(jìn)階式案例中有關(guān)web.xml的配置相同,只是將默認(rèn)歡迎頁面改為“register.jsp”。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.3具體實(shí)現(xiàn)具體實(shí)現(xiàn)6配置struts.xml7配置perties讓Struts 2框架識(shí)別資源配置文件的代碼為:“struts.custom.i18n.resources=Application”。8發(fā)布工程Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階
7、式教程 作者:趙彥作者:趙彥9.1.4Struts 2工作流程工作流程訪問注冊(cè)頁面訪問注冊(cè)頁面提交表單提交表單啟動(dòng)啟動(dòng)action處理處理數(shù)據(jù)數(shù)據(jù)Struts 2截獲截獲action請(qǐng)求請(qǐng)求查找查找web.xml找找到到Struts 2分發(fā)分發(fā)器器Filterstruts.xml配配置置action請(qǐng)求請(qǐng)求對(duì)應(yīng)的對(duì)應(yīng)的Action類,將提交的類,將提交的數(shù)據(jù)交給數(shù)據(jù)交給Action實(shí)例實(shí)例反射調(diào)用反射調(diào)用RegisterAction中的中的execute()方法方法跳轉(zhuǎn)到相應(yīng)的跳轉(zhuǎn)到相應(yīng)的JSP頁面顯示頁面顯示結(jié)果,并求其結(jié)果,并求其Action實(shí)例實(shí)例Java EEJava EE框架技術(shù)進(jìn)階
8、式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(1)一個(gè)優(yōu)秀的注冊(cè)程序,)一個(gè)優(yōu)秀的注冊(cè)程序,不僅僅是輸入不僅僅是輸入用戶名和密碼用戶名和密碼,在較為嚴(yán)格的系統(tǒng)中需要錄在較為嚴(yán)格的系統(tǒng)中需要錄入極為豐富的數(shù)據(jù),為了方入極為豐富的數(shù)據(jù),為了方便用戶錄入,就需要各種控便用戶錄入,就需要各種控件幫助用戶完成錄入工作,件幫助用戶完成錄入工作,如單選按鈕、復(fù)選框、文件如單選按鈕、復(fù)選框、文件上傳按鈕、下拉框、日期選上傳按鈕、下拉框、日期選擇器等等。擇器等等。Struts 2豐富豐富的標(biāo)簽庫可的標(biāo)簽庫可以完成該項(xiàng)以完成該項(xiàng)工作工作Java EEJava EE框架技術(shù)進(jìn)階式
9、教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(2)一個(gè)優(yōu)秀)一個(gè)優(yōu)秀產(chǎn)品是面向產(chǎn)品是面向國際的,因此支持國際化將國際的,因此支持國際化將是不容忽視的目標(biāo)。是不容忽視的目標(biāo)。Struts 2完全完全支持國際化支持國際化Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(3)由于)由于Struts 2完全放棄完全放棄了了ActionForm,但是由于,但是由于Java本身的缺陷,比如時(shí)間本身的缺陷,比如時(shí)間的表示方面等等,前臺(tái)表單的表示方面等等,前臺(tái)表單傳來的數(shù)據(jù),轉(zhuǎn)去給后臺(tái)傳來的數(shù)據(jù),轉(zhuǎn)去給后
10、臺(tái)Java處理時(shí),數(shù)據(jù)類型的轉(zhuǎn)處理時(shí),數(shù)據(jù)類型的轉(zhuǎn)換往往會(huì)加大程序員的工作換往往會(huì)加大程序員的工作量,那么量,那么Struts 2有沒有更有沒有更好的解決方案呢?好的解決方案呢?Struts 2內(nèi)建的內(nèi)建的類型轉(zhuǎn)換器可類型轉(zhuǎn)換器可以有效解決這以有效解決這類問題類問題Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.1.5分析不足之處分析不足之處(4)Struts 1的的Validator驗(yàn)驗(yàn)證框架可以有效解決數(shù)據(jù)校證框架可以有效解決數(shù)據(jù)校驗(yàn)的問題,那么驗(yàn)的問題,那么Struts 2如如何解決此類問題呢?何解決此類問題呢?Struts 2的的Validat
11、ion框架框架可以有效解決可以有效解決這類問題這類問題Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2任務(wù)任務(wù)2Struts 2標(biāo)簽庫標(biāo)簽庫任務(wù)描述:任務(wù)描述:與Struts 1一樣,Struts 2也提供了大量的標(biāo)簽,Struts 2的標(biāo)簽庫用于簡化JSP編程,開發(fā)者只需要在標(biāo)簽中做少量配置,就可以實(shí)現(xiàn)各種常見效果。Struts 2標(biāo)簽與Action聯(lián)系比較緊密,使用標(biāo)簽后,Struts 2會(huì)自動(dòng)完成JSP層的顯示數(shù)據(jù)、在Action層采集數(shù)據(jù)等工作。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2任務(wù)任
12、務(wù)2Struts 2標(biāo)簽庫標(biāo)簽庫任務(wù)目標(biāo):任務(wù)目標(biāo):Struts 2提供了大量Struts 1中沒有的標(biāo)簽,如日期選擇器、樹形結(jié)構(gòu)、主題、模板等,同時(shí)Struts 2還提供了對(duì)DWR技術(shù)、AJAX技術(shù)的支持,使Struts 2可以完成各種AJAX的效果。該任務(wù)的主要目標(biāo)就是認(rèn)識(shí)和了解Struts 2標(biāo)簽。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2.1Struts 2標(biāo)簽分類標(biāo)簽分類Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2.2表單標(biāo)簽表單標(biāo)簽Struts 2中所有的表單處理類都繼承于org.ap
13、ache.Struts ponents.UIBean類,在該類中定義了一些通用屬性,這些屬性在所有的表單標(biāo)簽中都存在,感興趣的讀者可以閱讀UIBean類的源代碼。在UIBean類中定義的通用屬性可分為模板相關(guān)屬性、JavaScript相關(guān)屬性、tooltip相關(guān)屬性、通用屬性四大來。課本200頁表9-1到9-4分別對(duì)這四大類通用屬性進(jìn)行了詳細(xì)描述。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2.3非表單標(biāo)簽非表單標(biāo)簽非表單標(biāo)簽主要用于生成一些非可視化的元素,或根據(jù)服務(wù)端的處理結(jié)果顯示一些信息。如div、actionerror等。表9-6給出了Str
14、uts 2的非表單標(biāo)簽的名稱和使用說明。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2.4控制標(biāo)簽控制標(biāo)簽Struts 2的非UI標(biāo)簽包括控制標(biāo)簽和數(shù)據(jù)標(biāo)簽。其中控制標(biāo)簽主要完成條件邏輯、循環(huán)邏輯的控制,以及對(duì)集合的合并、排序等操作??刂茦?biāo)簽有9個(gè),其名稱和功能描述如表9-7所示。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.2.5數(shù)據(jù)標(biāo)簽數(shù)據(jù)標(biāo)簽數(shù)據(jù)標(biāo)簽主要用于提供各種和數(shù)據(jù)訪問相關(guān)的功能,如創(chuàng)建一個(gè)類的對(duì)象實(shí)例、輸出國際化信息、包括其它的Web資源等。數(shù)據(jù)標(biāo)簽的名稱和使用說明如表9-8所示。Java
15、EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.3任務(wù)任務(wù)3Struts 2國際化國際化任務(wù)描述:任務(wù)描述:Struts 2的國際化功能做得相當(dāng)出色。在Struts 2中可以讀取資源文件中的國際化信息,并可以將這些國際化信息應(yīng)用到不同的地方,如數(shù)據(jù)校驗(yàn)、數(shù)據(jù)類型轉(zhuǎn)換等的出錯(cuò)信息,JSP頁面的國際化信息等。任務(wù)目標(biāo):任務(wù)目標(biāo):如何使用Struts 2框架解決程序的國際化問題就是該任務(wù)的主要目標(biāo)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.3.1Struts 2中的全局資源文件中的全局資源文件假設(shè)全局資源文件的baseN
16、ame為Application,則在perties文件中可以通過如下代碼設(shè)置。struts.custom.i18n.resources=Application在struts.xml文件中配置struts.custom.i18n.resources常量可以通過如下代碼完成。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.3.2在在Struts 2中訪問國際化信息中訪問國際化信息(1)使用標(biāo)簽在JSP頁面中直接輸出國際化信息。(2)使用表單標(biāo)簽輸出國際化信息,如、。(3)如果Action類從ActionSupport類繼承,可以通過Ac
17、tionSupport類的getText()方法來返回資源文件中的國際化信息。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.3.3對(duì)引入性案例實(shí)現(xiàn)國際化對(duì)引入性案例實(shí)現(xiàn)國際化實(shí)例實(shí)例1:在引入性案例的基礎(chǔ)上進(jìn)行修改,將其實(shí)現(xiàn)國際化。(1)7.3.2節(jié)創(chuàng)建了Application_en_US.properties文件和Application_zh_CN.properties文件,將這兩個(gè)文件復(fù)制到引入性案例的“src”路徑下,并刪除這兩個(gè)文件中的“”和“”標(biāo)記。(2)保存后重新發(fā)布工程。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程
18、作者:趙彥作者:趙彥9.3.3對(duì)引入性案例實(shí)現(xiàn)國際化對(duì)引入性案例實(shí)現(xiàn)國際化Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4任務(wù)任務(wù)4數(shù)據(jù)類型轉(zhuǎn)換器數(shù)據(jù)類型轉(zhuǎn)換器任務(wù)描述:任務(wù)描述:用戶錄入的信息通過網(wǎng)頁進(jìn)行收集,不管是什么類型,都是以字符串的形式提交給服務(wù)端。Java是強(qiáng)類型語言,想要接受客戶端提交的信息,就必須將這些信息轉(zhuǎn)換成相應(yīng)的Java數(shù)據(jù)類型。在傳統(tǒng)的Web系統(tǒng)中,這些工作必須由開發(fā)人員自己完成,如果使用了MVC框架,那么數(shù)據(jù)類型轉(zhuǎn)換的工作可以由MVC框架代替。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:
19、趙彥9.4任務(wù)任務(wù)4數(shù)據(jù)類型轉(zhuǎn)換器數(shù)據(jù)類型轉(zhuǎn)換器任務(wù)目標(biāo):任務(wù)目標(biāo):Struts 2提供了強(qiáng)大的類型轉(zhuǎn)換機(jī)制。Struts 2的類型轉(zhuǎn)換是基于OGNL表達(dá)式的。只要HTML表單元素(文本框、選擇框等)的name屬性按照OGNL的規(guī)則命名,提交后,系統(tǒng)那個(gè)就會(huì)將提交的數(shù)據(jù)轉(zhuǎn)換成Java相應(yīng)的數(shù)據(jù)類型。該任務(wù)的目標(biāo)即使學(xué)習(xí)Struts 2框架在數(shù)據(jù)類型轉(zhuǎn)換方面的技術(shù)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉(zhuǎn)換傳統(tǒng)的類型轉(zhuǎn)換在傳統(tǒng)的Web程序中,非字符串類型的信息需要手工將其轉(zhuǎn)換成相應(yīng)的Java數(shù)據(jù)類型。例如年齡需要轉(zhuǎn)換成整數(shù)類型數(shù)
20、據(jù),生日需要轉(zhuǎn)換成日期類型數(shù)據(jù)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉(zhuǎn)換傳統(tǒng)的類型轉(zhuǎn)換實(shí)例實(shí)例2:如果在注冊(cè)信息中存在年齡和生日相關(guān)信息,請(qǐng)給出相應(yīng)的數(shù)據(jù)類型轉(zhuǎn)換的解決方案。(1)假設(shè)在服務(wù)器端將注冊(cè)信息封裝在UserBean類中;年齡:age 整型 生日: birthday 日期型(2)首先對(duì)age、birthday請(qǐng)求參數(shù)進(jìn)行類型轉(zhuǎn)換后,之后才能賦值;Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.1傳統(tǒng)的類型轉(zhuǎn)換傳統(tǒng)的類型轉(zhuǎn)換(3)在相應(yīng)的Servlet程序中,通過requ
21、est獲取age的請(qǐng)求信息;(4)在相應(yīng)的Servlet程序中,通過request獲取birthday的請(qǐng)求信息。以上解決問題的方案雖以上解決問題的方案雖然可以完成數(shù)據(jù)類型轉(zhuǎn)換的然可以完成數(shù)據(jù)類型轉(zhuǎn)換的任務(wù),但是需要手工編寫大任務(wù),但是需要手工編寫大量代碼。那么基于量代碼。那么基于MVC架架構(gòu)的構(gòu)的Struts 2框架優(yōu)勢如何實(shí)框架優(yōu)勢如何實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的呢?現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的呢?Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.2Struts 2內(nèi)建的類型轉(zhuǎn)換器內(nèi)建的類型轉(zhuǎn)換器在Struts 2框架中提供了強(qiáng)大的類型轉(zhuǎn)換機(jī)制,開發(fā)人員可以使用Str
22、uts 2的這個(gè)機(jī)制來進(jìn)行任意復(fù)雜的數(shù)據(jù)類型轉(zhuǎn)換。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.3其它轉(zhuǎn)換方式其它轉(zhuǎn)換方式雖然在Struts 2中可以自動(dòng)將簡單類型、數(shù)組和集合類型,但是在實(shí)際應(yīng)用中還是不夠的。在Struts 2中,可以通過編寫基于OGNL的類型轉(zhuǎn)換器來完成基于類數(shù)據(jù)的轉(zhuǎn)換任務(wù)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.3其它轉(zhuǎn)換方式其它轉(zhuǎn)換方式Struts 2默認(rèn)的轉(zhuǎn)換器并不總能滿足需要。例如,輸入時(shí)間,Struts 2只能轉(zhuǎn)換形如12:00:00的格式,如果輸入12:00就會(huì)
23、報(bào)錯(cuò)。也有一些數(shù)據(jù)類型Struts轉(zhuǎn)換不了。因此需要自定義數(shù)據(jù)轉(zhuǎn)換器。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.3其它轉(zhuǎn)換方式其它轉(zhuǎn)換方式實(shí)例實(shí)例3:自定義一個(gè)日期時(shí)間轉(zhuǎn)換器,用于接收各種常用的時(shí)間格式。(1)所用知識(shí)點(diǎn)的簡介。(2)創(chuàng)建名為“DateConvertor”的工程。該工程中最重要的類就是實(shí)現(xiàn)日期時(shí)間數(shù)據(jù)轉(zhuǎn)換的DateTimeConvertor.java,其代碼如下。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.3其它轉(zhuǎn)換方式其它轉(zhuǎn)換方式(3)轉(zhuǎn)換器的配置在xwork-convers
24、perties中,該文件的代碼如下。(4)該實(shí)例的目標(biāo)是實(shí)現(xiàn)3種日期類型在DateTimeConvertorAction類中進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換器的調(diào)用對(duì)Action而言是透明的,轉(zhuǎn)換器Action類為“ConvertorAction.java”,代碼如下。(5)struts.xml的配置,代碼如下。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.4.3其它轉(zhuǎn)換方式其它轉(zhuǎn)換方式(6)web.xml文件的配置代碼如下。(7)用戶界面包括convert.jsp和convertSuccess.jsp,文件代碼如下。(8)運(yùn)行結(jié)果如圖9-10、9-11
25、所示。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5任務(wù)任務(wù)5數(shù)據(jù)校驗(yàn)數(shù)據(jù)校驗(yàn)任務(wù)描述:任務(wù)描述:在Struts 2中同時(shí)提供了客戶端和服務(wù)器端校驗(yàn)機(jī)制。Struts 2中的客戶端校驗(yàn)也是采用了JavaScript,但是這些JavaScript代碼是由Struts 2自動(dòng)添加的。而Struts 2的服務(wù)端校驗(yàn)位開發(fā)人員提供了多種選擇,如validate方法、Validation框架等。除此之外,開放性的Struts 2框架還允許開發(fā)人員編寫自定義的校驗(yàn)器。任務(wù)目標(biāo):任務(wù)目標(biāo):本任務(wù)目標(biāo)是了解并學(xué)會(huì)使用Struts 2框架的數(shù)據(jù)驗(yàn)證方法。Java E
26、EJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進(jìn)行數(shù)據(jù)校驗(yàn)方法進(jìn)行數(shù)據(jù)校驗(yàn)(1)引入性案例是通過用戶自己編寫的函數(shù)實(shí)現(xiàn)了數(shù)據(jù)校驗(yàn)功能。(2)Struts 2框架提供了兩個(gè)和校驗(yàn)有關(guān)的接口,分別是Validateable和ValidationAware,Validateable接口存在唯一一個(gè)validate()方法。Struts 2框架在調(diào)用Action的execute()之前,會(huì)自動(dòng)調(diào)用validate()方法。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.1使用使用valida
27、te方法進(jìn)行數(shù)據(jù)校驗(yàn)方法進(jìn)行數(shù)據(jù)校驗(yàn)(3)但是validate()方法沒有返回值,這就意味著無法通過validate()方法的返回值來驗(yàn)證輸入數(shù)據(jù)是否通過Struts 2的校驗(yàn)。此時(shí)需要使用另外一個(gè)校驗(yàn)感知接口ValidationAware。該接口中存放了一系列的addXXX()方法,這些方法可以將校驗(yàn)過程中發(fā)生的錯(cuò)誤信息添加到系統(tǒng)中,實(shí)際上是添加到一個(gè)Map對(duì)象中。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進(jìn)行數(shù)據(jù)校驗(yàn)方法進(jìn)行數(shù)據(jù)校驗(yàn)(4)為此Struts 2在提供了ActionSupport類,實(shí)現(xiàn)了這兩個(gè)接
28、口。用于完成數(shù)據(jù)校驗(yàn)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.1使用使用validate方法進(jìn)行數(shù)據(jù)校驗(yàn)方法進(jìn)行數(shù)據(jù)校驗(yàn)實(shí)例實(shí)例4:在本單元實(shí)例1的基礎(chǔ)上對(duì)RegisterStruts2工程進(jìn)行修改,使其通過validate方法完成數(shù)據(jù)校驗(yàn)。對(duì)RegisterAction類進(jìn)行修改,修改后的代碼如下,運(yùn)行結(jié)果和實(shí)例1相同。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validation框架進(jìn)行數(shù)據(jù)校驗(yàn)框架進(jìn)行數(shù)據(jù)校驗(yàn)validate()方法可以完成數(shù)據(jù)校驗(yàn),但仍需要編寫大量代碼,而
29、且代碼復(fù)用率不高。Struts 2提供了Validation校驗(yàn)框架,通過該框架,只需要在配置文件中配置要校驗(yàn)的字段和校驗(yàn)規(guī)則,就可以對(duì)相應(yīng)的字段進(jìn)行校驗(yàn)。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validation框架進(jìn)行數(shù)據(jù)校驗(yàn)框架進(jìn)行數(shù)據(jù)校驗(yàn)實(shí)例實(shí)例5:在本單元實(shí)例4的基礎(chǔ)上繼續(xù)對(duì)RegisterStruts2工程進(jìn)行修改,使其通過Validation框架完成數(shù)據(jù)校驗(yàn)。(1)對(duì)Action類進(jìn)行修改,刪除其中的數(shù)據(jù)校驗(yàn)方法。(2)在RegisterAction類所在路徑下創(chuàng)建名為RegisterAction-validation.xml的配置文件。Java EEJava EE框架技術(shù)進(jìn)階式教程框架技術(shù)進(jìn)階式教程 作者:趙彥作者:趙彥9.5.2使用使用Validati
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車和食品合作協(xié)議書
- 無紙化商戶簽約協(xié)議書
- 課程置換協(xié)議書
- 聯(lián)通授權(quán)協(xié)議書
- 自駕免責(zé)協(xié)議書
- 藥廠授權(quán)協(xié)議書
- 平臺(tái)店鋪代運(yùn)營協(xié)議書
- 藥品三方協(xié)議書
- 豪車合成協(xié)議書
- 舊房屋頂翻合同協(xié)議書
- 病假醫(yī)療期申請(qǐng)單(新修訂)
- 鉆孔樁鉆孔記錄表(旋挖鉆)
- 660MW機(jī)組金屬監(jiān)督項(xiàng)目
- JBK-698CX淬火機(jī)數(shù)控系統(tǒng)
- ZJUTTOP100理工類學(xué)術(shù)期刊目錄(2018年版)
- 心理學(xué)在船舶安全管理中的應(yīng)用
- JJF(鄂) 90-2021 電子輥道秤校準(zhǔn)規(guī)范(高清版)
- 超星爾雅學(xué)習(xí)通《今天的日本》章節(jié)測試含答案
- 餐飲量化分級(jí)
- 三一重工SCC2000履帶吊履帶式起重機(jī)技術(shù)參數(shù)
- [精品]GA38-2004《銀行營業(yè)場所風(fēng)險(xiǎn)等級(jí)和防護(hù)級(jí)別的規(guī)定》
評(píng)論
0/150
提交評(píng)論