溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Swing應(yīng)用的數(shù)據(jù)驗(yàn)證是什么

發(fā)布時(shí)間:2021-12-27 14:08:44 來(lái)源:億速云 閱讀:106 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了Swing應(yīng)用的數(shù)據(jù)驗(yàn)證是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

這段時(shí)間真是忙得要死,一方面要開(kāi)發(fā)公司項(xiàng)目的系統(tǒng)框架,要將項(xiàng)目分成不同的子項(xiàng)目,編寫(xiě)核心代碼;另一方面要將極限編程(XP)引入團(tuán)隊(duì)開(kāi)發(fā),部署各類(lèi) XP需要的服務(wù)例如subversion啦,ant+ivy啦,Hudson啦等等。順便說(shuō)句題外話,ubuntu還真是不是一般的好用,建議有能力的全部轉(zhuǎn)到ubuntu上去開(kāi)發(fā)。

我目前開(kāi)發(fā)的這個(gè)框架的客戶端是具肥的客戶端,也就是Swing客戶端了。Swing應(yīng)用相對(duì)于Web應(yīng)用有很多優(yōu)勢(shì),因?yàn)樗?。?shù)據(jù)驗(yàn)證就是其中一個(gè)。當(dāng)然現(xiàn)在的Web應(yīng)用通過(guò)使用Ajax也要比以前強(qiáng)很多了,但是還是避免不了在驗(yàn)證數(shù)據(jù)時(shí)向服務(wù)段發(fā)出請(qǐng)求,至少你無(wú)法避免驗(yàn)證結(jié)果從Web服務(wù)器傳輸?shù)接脩魹g覽器上這段過(guò)程。而Swing這類(lèi)肥客戶端可以實(shí)現(xiàn)完全在本地對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,甚至可以斷網(wǎng)繼續(xù)工作(這也是Web應(yīng)用目前在研發(fā)的一個(gè)重要課題)。

前段時(shí)間開(kāi)發(fā)出了一個(gè)可以應(yīng)用于所有Swing應(yīng)用的通用數(shù)據(jù)驗(yàn)證模塊,發(fā)現(xiàn)它在項(xiàng)目中使用后,對(duì)于普通的數(shù)據(jù)驗(yàn)證,程序員幾乎不需要編碼,效率提高了不少,就寫(xiě)了一篇博文拿出來(lái)和大家分享。原文是用英文寫(xiě)的。

編寫(xiě)這個(gè)模塊使用了很多不同的開(kāi)源框架和類(lèi)庫(kù),其中很重要的一個(gè)就是JXLayer.文章寫(xiě)完后,我就跑去邀請(qǐng)JXLayer的作者Alexp來(lái)指點(diǎn)一下,然后就在我的文章后面開(kāi)始了一段討論,挺有意思的,他不愧為是Swing team里面的牛人啊!厲害??!呵呵。

ok,回到今天這篇文章的正題。今天的主要目的是將我的英文博文翻譯成中文(自己的文章,我就不逐字逐句翻譯了,意思到了就行了,可能還會(huì)隨興展開(kāi)一番討論)在這里展示給大家,與大家分享開(kāi)發(fā)經(jīng)驗(yàn),希望大家能夠從中獲益,也希望能夠以文會(huì)友,廣交朋友。廢話少說(shuō),切入正題。

數(shù)據(jù)驗(yàn)證(Validation)一直是軟件開(kāi)發(fā)中非常重要的一環(huán),有了它,你的系統(tǒng)會(huì)讓客戶感到更加友善,同時(shí)你的系統(tǒng)也得到了一定程度的保護(hù)。一般來(lái)說(shuō),數(shù)據(jù)驗(yàn)證既可以在客戶端也可以在服務(wù)端。默認(rèn)的JSF數(shù)據(jù)驗(yàn)證就是在服務(wù)端,數(shù)據(jù)只能在被提交以后才能夠被驗(yàn)證,然后把錯(cuò)誤信息傳遞回用戶的瀏覽器。后來(lái)大規(guī)模使用Ajax后,基本可以實(shí)現(xiàn)對(duì)修改的數(shù)據(jù)“即時(shí)”驗(yàn)證,注意這里是個(gè)打了引號(hào)的即時(shí),數(shù)據(jù)事實(shí)上還是要在瀏覽器和服務(wù)端之間進(jìn)行傳遞的,只不過(guò)Ajax將這種傳遞改為隱式了而已,理論上并沒(méi)有真正實(shí)現(xiàn)(斷網(wǎng))即時(shí)驗(yàn)證。而在Swing應(yīng)用上就能夠達(dá)成這種愿望。

事實(shí)上,開(kāi)發(fā)Swing應(yīng)用時(shí),數(shù)據(jù)驗(yàn)證一直比較棘手,需要手工編碼的地方太多,效率不高。后來(lái)出了JGoodies Validation 結(jié)合JGoodies binding后,好了一些。這個(gè)JGoodies Validation既可以實(shí)現(xiàn)model層面的驗(yàn)證,也可以實(shí)現(xiàn)Bean層面的驗(yàn)證,但是多年使用下來(lái),發(fā)現(xiàn)其實(shí)它比較適用于中小項(xiàng)目,而且要編寫(xiě)的代碼其實(shí)一點(diǎn)不比自己手動(dòng)編寫(xiě)的少。

JGoodies流行了一段時(shí)間后,sun開(kāi)始推出自己的bean綁定方案:beansbinding(JSR 295),我個(gè)人感覺(jué)要比JGoodies binding好用(JGoodies的作者Karsten也在專(zhuān)家組里,這個(gè)人我以前和他一起共事過(guò),我的msn space里面還有跟他的合影,絕對(duì)是Swing界的牛人)。這個(gè)beansbinding也提供數(shù)據(jù)驗(yàn)證,但是它的這個(gè)數(shù)據(jù)驗(yàn)證只是在target被改動(dòng)后,數(shù)據(jù)被同步回source之前才會(huì)起作用,使用起來(lái)局限性比較大,而且編碼量也不小。

由于目前絕大部分項(xiàng)目是基于POJO的,Hibernate validator已經(jīng)提供了一個(gè)很好的數(shù)據(jù)驗(yàn)證框架,我們完全沒(méi)必要再重復(fù)發(fā)明輪子,我們應(yīng)該努力站在巨人的肩膀上,這樣我們才能站得更高,看得更遠(yuǎn)。于是我考慮結(jié)合beansbinding和Hibernate Validator開(kāi)發(fā)數(shù)據(jù)驗(yàn)證。還有一個(gè)重要的問(wèn)題,那就是數(shù)據(jù)錯(cuò)誤的時(shí)候,需要在用戶界面上展示相應(yīng)的信息,例如Error icon和錯(cuò)誤提示,這部分我考慮使用JXLayer.

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Swing應(yīng)用的數(shù)據(jù)驗(yàn)證是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI