版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章類型轉(zhuǎn)換本章目標(biāo)OGNL類型轉(zhuǎn)換集合類型轉(zhuǎn)換自定義類型轉(zhuǎn)換類型轉(zhuǎn)換Java是強(qiáng)類型語(yǔ)言,而MVC框架從用戶接受過(guò)來(lái)的數(shù)據(jù)均是字符串,那么MVC框架就需要將請(qǐng)求的字符串轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型Struts2提供了非常強(qiáng)大的類型轉(zhuǎn)換支持Struts2類型轉(zhuǎn)換機(jī)制的基礎(chǔ)是OGNL表達(dá)式可以使用ONGL表達(dá)式來(lái)命名參數(shù)例如,Action類有user屬性(類型為User,并有相應(yīng)的setter和getter方法),那在表單頁(yè)面相應(yīng)的使用OGNL表達(dá)式命名,如、user.age等表現(xiàn)層數(shù)據(jù)處理在B/S應(yīng)用中,表現(xiàn)層主要用于與用戶交互,數(shù)據(jù)的流向主要是輸入數(shù)據(jù)和輸出數(shù)據(jù),也就是用戶向服務(wù)器提交數(shù)據(jù),服務(wù)器向用戶展示數(shù)據(jù)對(duì)于表現(xiàn)層,主要是需要完成由用戶輸入的字符串形式的數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的數(shù)據(jù)類型內(nèi)置的類型轉(zhuǎn)換器Struts2已經(jīng)完成大多數(shù)常用的類型轉(zhuǎn)換器boolean和Booleanchar和Characterint和Integerlong和Longfloat和Floatdouble和DoubleDatearraycollection內(nèi)置類型轉(zhuǎn)換器-1User.java代碼內(nèi)置類型轉(zhuǎn)換器-2RegUserAction.java代碼struts.xml片段代碼注意:屬性及方法名稱內(nèi)置類型轉(zhuǎn)換器-3regUser.jsp代碼內(nèi)置類型轉(zhuǎn)換器-4e.jsp代碼運(yùn)行效果如下圖集合類型轉(zhuǎn)換Struts2對(duì)集合類型轉(zhuǎn)換提供了很好的支持可以使用集合對(duì)象來(lái)保存表單提交的數(shù)據(jù)對(duì)于表單提交多個(gè)相同類別的信息很有幫助支持如:List、Map、Set等對(duì)集合的支持在Action中,將相關(guān)屬性的泛型取消在對(duì)應(yīng)的Action目錄下創(chuàng)建名為<Action類>-perties的文件在該文件下指定集合元素的數(shù)據(jù)類型如果集合是java.util.List,格式為:Element_xxx=復(fù)合類型其中Element是固定的,xxx表示Action中屬性的集合屬性名,復(fù)合類型是集合元素類型的完全限定名如果集合是java.util.Map,格式為:Key_xxx=復(fù)合類型其中Key是固定的,xxx表示Action中屬性的集合屬性名,復(fù)合類型是集合元素類型的完全限定名對(duì)List的支持-1Book.java代碼對(duì)List的支持-2BookListAction.java代碼struts.xml片段代碼對(duì)List的支持-3在BookListAction.java同目錄下添加BookListAperties添加Action中books集合屬性的集合元素的類型對(duì)List的支持-4orderList.jsp代碼對(duì)List的支持-5bookList.jsp代碼運(yùn)行結(jié)果如下圖對(duì)Map的支持-1BookMapAction.java代碼對(duì)Map的支持-2struts.xml代碼在BookMapAction.java所在目錄下添加BookMapAperties文件對(duì)Map的支持-3orderMap.jsp代碼bookMap.jsp代碼對(duì)Map的支持-4運(yùn)行效果如下圖orderMap.jsp頁(yè)面orderMap.jsp頁(yè)面對(duì)Set的支持Set集合并不維護(hù)元素加入的順序,也不能通過(guò)索引來(lái)訪問(wèn)元素在Struts2提供了使用JavaBean對(duì)象的屬性來(lái)索引集合元素方式,通過(guò)元素屬性值來(lái)唯一獲取Set集合中的元素用于索引集合元素的屬性在<Action類名>-perties文件中通過(guò)KeyProperty_xxx=yyy來(lái)指定其中,xxx表示集合類型的屬性,yyy表示是集合元素(即JavaBean對(duì)象)的屬性名對(duì)Set的支持-1BookSetAction.java代碼struts.xml代碼對(duì)Set的支持-2在BookSetAction.java所在目錄下添加BookSetAperties文件說(shuō)明在BookSetAction類中必須要實(shí)例化books屬性第2行,指定集合對(duì)象第3行,表示引用的集合元素為null時(shí),框架會(huì)自動(dòng)實(shí)例化該對(duì)象對(duì)Set的支持-3orderSet.jsp代碼對(duì)Set的支持-4bookSet.jsp代碼運(yùn)行結(jié)果如下圖自定義類型轉(zhuǎn)換器-1如果Struts2內(nèi)置類型轉(zhuǎn)換器不能滿足應(yīng)用需求,那么可以另外開(kāi)發(fā)一個(gè)類型轉(zhuǎn)換器,從而自動(dòng)實(shí)現(xiàn)類型轉(zhuǎn)換需要實(shí)現(xiàn)ognl.TypeConverter接口,實(shí)現(xiàn)其中的convertValue()方法通常,可以繼承OGNL中的工具類ognl.DefaultTypeConverter,它已實(shí)現(xiàn)ognl.TypeConverter接口,并提供了一個(gè)簡(jiǎn)化的convertValue()方法,如下所示:convertValue(Mapcontext,Objectvalue,ClasstoType)方法context:表示OGNL上下文的Map對(duì)象value:表示需要轉(zhuǎn)換的對(duì)象toType:表示需要轉(zhuǎn)換的目標(biāo)類型自定義類型轉(zhuǎn)換器-2DateConverter.java代碼自定義類型轉(zhuǎn)換器-3通常,還可以繼承Struts2中的抽象類org.apache.struts2.util.StrutsTypeConverter,方法如下publicabstractObjectconvertFromString(Mapcontext,String[]values,ClasstoClass)表示將一個(gè)或多個(gè)字符串值轉(zhuǎn)換為指定的類型context,表示action上下文的Map對(duì)象values,表示要轉(zhuǎn)換的字符串值toClass,表示要轉(zhuǎn)換的目標(biāo)類型publicabstractStringconvertToString(Mapcontext,Objectobject)表示將指定的對(duì)象轉(zhuǎn)換為指定格式的字符串context,表示action上下文的Map對(duì)象object,表示要轉(zhuǎn)換的對(duì)象自定義類型轉(zhuǎn)換器-4BirthdayConverter.java代碼自定義類型轉(zhuǎn)換-1Student.java代碼自定義類型轉(zhuǎn)換-2StudentAction.java代碼struts.xml片段代碼自定義類型轉(zhuǎn)換-3studentRegister.jsp代碼studentInfo.jsp自定義類型轉(zhuǎn)換-4配置自定義轉(zhuǎn)換器應(yīng)用于全局范圍的類型轉(zhuǎn)換器通常在WEB-INF/classes目錄下創(chuàng)建perties文件,并提供相應(yīng)的屬性定義。其中,屬性是要轉(zhuǎn)換的類的名稱,屬性值是類型轉(zhuǎn)換器的名稱例如:java.util.Date=xx.xx.XxxConverter應(yīng)用與特定類的轉(zhuǎn)換器配置針對(duì)某個(gè)特定類的類型轉(zhuǎn)換器,方法是在類所在的包中創(chuàng)建<ClassName>-c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)合集人事管理篇十篇
- 《證券交易流程》課件
- 《企業(yè)戰(zhàn)略管理》課件
- 新生引航共筑未來(lái)
- 學(xué)校三年級(jí)班主任工作總結(jié)5篇
- 2023年-2024年新員工入職安全教育培訓(xùn)試題附答案(突破訓(xùn)練)
- 大學(xué)畢業(yè)晚會(huì)策劃書(shū)合集15篇
- 2023年-2024年新入職員工安全教育培訓(xùn)試題附下載答案可打印
- 2024員工三級(jí)安全培訓(xùn)考試題(原創(chuàng)題)
- 保護(hù)環(huán)境的建議書(shū)(合集15篇)
- 知識(shí)圖譜智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 《灰塵的旅行》導(dǎo)讀
- 高血壓患者不遵醫(yī)飲食行為的原因分析及對(duì)策
- 60周歲以上的老年人換領(lǐng)C1駕照三力測(cè)試題答案
- 社區(qū)依法執(zhí)業(yè)培訓(xùn)課件
- ISO50001能源管理體系管理評(píng)審報(bào)告OK
- 輸送機(jī)械安全培訓(xùn)
- 人教版六年級(jí)上冊(cè)計(jì)算題專項(xiàng)練習(xí)1000題及答案
- 農(nóng)村文化建設(shè)培訓(xùn)
- 教育理念和教育方法
- 九小場(chǎng)所安全檢查表
評(píng)論
0/150
提交評(píng)論