999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

輕量級(jí)Web表單數(shù)據(jù)封裝框架實(shí)現(xiàn)

2009-04-29 00:00:00吳含黃均樂(lè)
電腦知識(shí)與技術(shù) 2009年5期

摘要:在使用面向?qū)ο螅∣OP)的思想進(jìn)行JSP開(kāi)發(fā)時(shí),表單數(shù)據(jù)轉(zhuǎn)化為JavaBean對(duì)象傳統(tǒng)的方法為使用jsp:useBean標(biāo)簽和通過(guò)HttpServletRequest類的getParameter和JavaBean的set方法來(lái)實(shí)現(xiàn),目前流行的web框架中(struts1、struts2)集成了JavaBean對(duì)象對(duì)表單數(shù)自動(dòng)封裝。以上二個(gè)方面實(shí)現(xiàn)對(duì)JSP頁(yè)面數(shù)據(jù)封裝存在各自的弊端,該文綜合以上兩種方式實(shí)現(xiàn)了JavaBean對(duì)象自動(dòng)對(duì)JSP頁(yè)面,并不依賴與任何web框架。

關(guān)鍵詞:面向?qū)ο缶幊蹋籎avaBean;封裝;反射;jsp標(biāo)簽

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)05-1116-02

The Lightweight Framework of Encapsulating Web Data to Object

WU Han-wen1, HUANG Jun-le2

(1.Department of Neurosurgery, Wuhan General hospital, Guangzhou Command, PLA, Wuhan 430070, China; 2.Wuhan Institute of Marine Electric Propulsion CSIC, Wuhan 430064, China)

Abstract: During the JSP software development with OOP method, using jsp:useBean tag and HttpServletRequest’s set and JavaBean’s get method to implement encapsulation jsp datas and JavaBean traditionally, the popular web frameworks(such as struts、webwork)implement the encapsulation between jsp datas and JavaBean automatically. This article discusses the method which encapsulates the JavaBean from jsp automatically, and don’t depend on any web frameworks.

Key words: OOP; JavaBean; encapsulation; reflect; jsp tag

1 引言

在使用面向?qū)ο螅∣bject Oriented Programming)思想進(jìn)行web開(kāi)發(fā)時(shí),瀏覽器向服務(wù)器提交數(shù)據(jù)并封裝到Java對(duì)象是一個(gè)非常頻繁,傳統(tǒng)的方式采用jsp標(biāo)簽-jsp:useBean實(shí)現(xiàn)瀏覽器數(shù)據(jù)封裝到Java對(duì)象()中,使用這種方式只能封裝簡(jiǎn)單字符型的數(shù)據(jù),不能封裝復(fù)雜的數(shù)據(jù)類型(日期、布爾)。針對(duì)此種封裝方式的弊端,在當(dāng)前流行的web框架中(struts1、struts2、webwork)[1]實(shí)現(xiàn)了復(fù)雜數(shù)據(jù)的封裝,但是此種方式與框架集成,脫離web框架將無(wú)法實(shí)現(xiàn)J頁(yè)面數(shù)據(jù)到Java對(duì)象封裝,且此類框架中不能實(shí)現(xiàn)對(duì)自定義數(shù)據(jù)對(duì)象封裝。針對(duì)以上二中方式的弊端,本文提出了基于JSP標(biāo)簽實(shí)現(xiàn)對(duì)瀏覽器中任何類型數(shù)據(jù)到Java對(duì)象封裝,使用了JSP標(biāo)簽、Java反射機(jī)制等技術(shù)。

2 輕量級(jí)web表單數(shù)據(jù)封裝框架實(shí)現(xiàn)方法

2.1 面向?qū)ο蟊韱螖?shù)據(jù)封裝

在使用web技術(shù)開(kāi)發(fā)時(shí),一個(gè)表單往往代表一個(gè)對(duì)象數(shù)據(jù),在java平臺(tái)中使用Java Bean來(lái)封裝表單提交的數(shù)據(jù)。Java Bean是可復(fù)用的組件,對(duì)Java Bean并沒(méi)有嚴(yán)格的規(guī)范,理論上講,任何一個(gè)Java類都可以是一個(gè)Bean.但通常情況下以Java Bean應(yīng)具有一個(gè)無(wú)參的構(gòu)造器.另外,通常Java Bean還要實(shí)現(xiàn)Serializable接口用于實(shí)現(xiàn)Bean的持久性[2]。Java Bean實(shí)際上相當(dāng)于微軟COM模型中的本地進(jìn)程內(nèi)COM組件,它是不能被跨進(jìn)程訪問(wèn)的.Java Bean具有以下幾個(gè)方面的特點(diǎn):

1) 定義該對(duì)象使用的常量。

2) 絕大部分屬性定義為私有屬性(private)。

3) 對(duì)屬性設(shè)置通過(guò)setXxx方法進(jìn)行,方法訪問(wèn)權(quán)限為公共(public),且set方法可以擁有一定的業(yè)務(wù)邏輯。

4) 對(duì)屬性的訪問(wèn)通過(guò)getXxx方法進(jìn)行,方法訪問(wèn)權(quán)限為公共(public),且get方法可以擁有一定的業(yè)務(wù)邏輯。

5) 對(duì)象序列化,Java Bean對(duì)象實(shí)現(xiàn)Serializable接口,為此對(duì)象可以作為文件流在網(wǎng)絡(luò)中傳輸。

Java Bean封裝表單提交數(shù)據(jù)有下面幾種方式:

1) 通過(guò)JSP內(nèi)置對(duì)象request獲取表單提交數(shù)據(jù)(字符串類型),將數(shù)據(jù)轉(zhuǎn)化為與Java Bean對(duì)應(yīng)的數(shù)據(jù)類型,通過(guò)set方法將數(shù)據(jù)封裝到Java Bean中。此種方式工作量大,但可封裝任何類型的數(shù)據(jù)類型,其中包括自定義的數(shù)據(jù)類型。

2) 通過(guò)jsp:useBean標(biāo)簽來(lái)實(shí)現(xiàn)頁(yè)面數(shù)據(jù)與Java Bean對(duì)象的封裝。此種方式實(shí)現(xiàn)比較簡(jiǎn)單,但不能封裝復(fù)雜的數(shù)據(jù)類型。

3) 流行web框架集成實(shí)現(xiàn)自動(dòng)對(duì)頁(yè)面數(shù)據(jù)封裝。此種方式封裝的數(shù)據(jù)類型比較多,但需要編寫配置文件,且此種方式不能脫離框架。

針對(duì)以上各種實(shí)現(xiàn)方式的優(yōu)缺點(diǎn),下面論述輕量級(jí)web表單數(shù)據(jù)封裝框架實(shí)現(xiàn)。

2.2JSP標(biāo)簽開(kāi)發(fā)

Jsp標(biāo)簽介紹:

JSP標(biāo)簽開(kāi)發(fā)步驟[3]:

1) 開(kāi)發(fā)jsp標(biāo)簽類,標(biāo)簽類需繼承javax.servlet.jsp.tagext.TagSupport類,并覆寫doStartTag和doEndTag方法。在doEndTag方法體類實(shí)現(xiàn)封裝web表單數(shù)據(jù)到JavaBean的封裝。

2) 編寫tld文件,在tld文件中描述標(biāo)簽名稱、標(biāo)簽定義類、標(biāo)簽體,標(biāo)簽屬性定義:屬性名稱、屬性是否可空等。

3) 在web.xml配置文件中配置標(biāo)簽庫(kù),配置如下:

tld名稱

tld文件路徑

通過(guò)以上步驟實(shí)現(xiàn)了自定義標(biāo)簽,在jsp頁(yè)面導(dǎo)入標(biāo)簽后變可使用標(biāo)簽進(jìn)行web表單數(shù)據(jù)封裝。

2.3 輕量級(jí)web表單數(shù)據(jù)封裝框架實(shí)現(xiàn)

輕量級(jí)web表單數(shù)據(jù)封裝需要使用jsp標(biāo)簽和java反射機(jī)制來(lái)實(shí)現(xiàn),實(shí)現(xiàn)如圖1所示。

JSP頁(yè)面層在框架實(shí)現(xiàn)中需要規(guī)范各組件的命名,命名規(guī)范如下:

1) 組件中的值若是java基本類型(String、Short、Integer、Double、Float、Boolean、Char、Date)則組件的命名只需與封裝JavaBean對(duì)象名稱一致便可(區(qū)分大小寫)。

2) 組件中的值若是JavaBen中自定義的對(duì)象的時(shí),比如JavaBean中有一個(gè)屬性為自定義對(duì)象User,組件的值對(duì)應(yīng)User對(duì)象的Id,則組件的命名需為:user.Id(區(qū)分大小寫)。

頁(yè)面數(shù)據(jù)分析根據(jù)JavaBean屬性針對(duì)的頁(yè)面數(shù)據(jù)進(jìn)行合法性分析,非法數(shù)據(jù)將被拋棄,不予封裝到JavaBean對(duì)象中。

反射機(jī)制映射是整個(gè)框架中的核心,該機(jī)制實(shí)現(xiàn)頁(yè)面數(shù)據(jù)到JavaBean對(duì)象封裝[4]。反射(Reflect)是Java編程語(yǔ)言的特性。反射就是一個(gè)在當(dāng)前JVM 中支持類、接口和對(duì)象內(nèi)省的小型的、類型安全的和可靠的API。它是通過(guò)java.lang.reflect包提供的,可以對(duì)類的能力進(jìn)行分析。圖2的流程圖描述了在自定義標(biāo)簽中粘合數(shù)據(jù)分析、映射過(guò)程。

自定義標(biāo)簽調(diào)用數(shù)據(jù)驗(yàn)證模塊,該模塊對(duì)JSP頁(yè)面數(shù)據(jù)進(jìn)行驗(yàn)證,非法數(shù)據(jù)將被拋棄,使用自定義的getInstanceByClassType方法獲取JavaBean實(shí)例,然后調(diào)用自定義getObjectByTypeValue方法將JSP頁(yè)面數(shù)據(jù)轉(zhuǎn)化為JavaBean對(duì)象屬性類型實(shí)例,使用invokeMethod調(diào)用JavaBean的set方法將數(shù)據(jù)封裝到JavaBean實(shí)例中并返回給JSP容器,供JSP程序調(diào)用。

3 結(jié)論

本文針對(duì)當(dāng)前面向?qū)ο蟊韱螖?shù)據(jù)封裝的優(yōu)缺點(diǎn),提出了輕量級(jí)web表單數(shù)據(jù)封裝框架實(shí)現(xiàn)方案,在實(shí)現(xiàn)方案中使用了JSP標(biāo)簽技術(shù)、JAVA反射等技術(shù)。輕量級(jí)web表單數(shù)據(jù)封裝框架方案已實(shí)現(xiàn)并在系統(tǒng)開(kāi)發(fā)中得到應(yīng)用,從而提高了軟件開(kāi)發(fā)效率。此框架具有良好的操作和擴(kuò)張性。

參考文獻(xiàn):

[1] 赫斯特.實(shí)戰(zhàn)STRUTS[M].北京:機(jī)械工業(yè)出版社,2005:100-130.

[2] 埃史爾.Java編程思想[M].4版.陳昊鵬,譯.北京:機(jī)械工業(yè)出版社,2007:456-480.

[3] 劉曉華,張健,周慧貞.JSP應(yīng)用開(kāi)發(fā)詳解[M].3版.北京:電子工業(yè)出版社,2007:321-350.

[4] 孫衛(wèi)琴.Java面向?qū)ο缶幊?Java開(kāi)發(fā)專家[M].北京:電子工業(yè)出版社,2006:430-460.

主站蜘蛛池模板: 欧美伊人色综合久久天天| 亚洲天堂日本| 精品一区二区三区视频免费观看| 亚洲三级视频在线观看| 国产丰满成熟女性性满足视频 | 国产成人精品免费av| 91高清在线视频| 国产精品视频第一专区| 中文字幕在线永久在线视频2020| 日韩国产无码一区| 欧美伦理一区| 亚洲精品福利视频| 中文字幕在线不卡视频| 免费不卡视频| 一本大道香蕉中文日本不卡高清二区 | 青青操国产视频| 成人福利在线免费观看| 久久美女精品国产精品亚洲| 国产一区二区免费播放| AV不卡在线永久免费观看| 亚洲伦理一区二区| 精品国产成人a在线观看| 无码日韩视频| 成人在线不卡视频| 亚洲国产一区在线观看| 亚洲欧美精品一中文字幕| 青草视频免费在线观看| 成人精品视频一区二区在线| 美女一级毛片无遮挡内谢| 亚洲精品在线观看91| 911亚洲精品| 黄色免费在线网址| 日韩午夜伦| 亚洲午夜国产片在线观看| 欧美午夜理伦三级在线观看| 日韩无码真实干出血视频| 欧美综合成人| 成人无码区免费视频网站蜜臀| 亚洲欧美自拍中文| 天天摸夜夜操| 久久婷婷六月| 亚洲成人高清无码| 国产乱视频网站| 欧美精品亚洲精品日韩专区va| 亚洲中文精品久久久久久不卡| 精品成人一区二区| 欧美亚洲国产精品久久蜜芽| 91在线视频福利| 亚洲色欲色欲www网| 波多野结衣无码AV在线| 国产h视频在线观看视频| 日本欧美一二三区色视频| 亚洲无卡视频| 国产 日韩 欧美 第二页| 亚洲v日韩v欧美在线观看| www.精品视频| 99久久精品国产精品亚洲| 性激烈欧美三级在线播放| a级毛片免费在线观看| 日韩东京热无码人妻| 亚洲欧美不卡| 国产精品偷伦在线观看| 欧美日韩精品综合在线一区| 欧美中文字幕一区二区三区| 99久视频| 亚洲日本中文字幕天堂网| 欧美日韩激情在线| 色欲综合久久中文字幕网| 精品久久久久成人码免费动漫 | 国产成人亚洲欧美激情| 99热国产这里只有精品9九| 日韩a级毛片| 中文字幕在线永久在线视频2020| 国产乱子伦无码精品小说| 91青青草视频| 国产成人h在线观看网站站| 91精品网站| 精品久久综合1区2区3区激情| 国产精品深爱在线| 婷婷六月天激情| 天堂va亚洲va欧美va国产| 麻豆AV网站免费进入|