国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Struts2框架數(shù)據(jù)校驗的分析與應(yīng)用

2011-07-05 12:24齊新力郭亞莎鄒振宇
儀器儀表用戶 2011年5期
關(guān)鍵詞:服務(wù)器端表單電話號碼

齊新力,郭亞莎,鄒振宇

(成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院,成都610059)

0 引言

隨著社會的發(fā)展,計算機(jī)技術(shù)幾乎進(jìn)入了生活的每個領(lǐng)域,電子商務(wù)、電子貨幣和網(wǎng)上測試等網(wǎng)絡(luò)業(yè)務(wù)的興起,用戶數(shù)據(jù)信息的合法性校驗變得越來越重要。對于一個Web應(yīng)用,所有的用戶數(shù)據(jù)都是通過瀏覽器收集的[1],如果用戶操作不熟練,輸入出錯,硬件設(shè)備不正常,網(wǎng)絡(luò)傳輸?shù)牟环€(wěn)定,甚至惡意用戶的蓄意破壞等等,這都有可能造成輸入異常,輕則導(dǎo)致系統(tǒng)非正常中斷,重則導(dǎo)致系統(tǒng)崩潰。所以我們要在提交用戶輸入的數(shù)據(jù)前,對數(shù)據(jù)進(jìn)行過濾,將異常輸入過濾掉。對異常輸入的過濾,稱為數(shù)據(jù)校驗[2]。

1 Struts2框架數(shù)據(jù)校驗的一般流程

Struts2是一個服務(wù)器Java Web開發(fā)框架,它采用MVC(模型—視圖—控制器)模式[3]。它的數(shù)據(jù)校驗流程[4]如圖1所示。

2 客戶端校驗

客戶端校驗是比較簡單和初級的校驗方式,通過在JSP等視圖文件中,嵌入JavaScript代碼來完成輸入數(shù)據(jù)的過濾。其中JavaScript[5]是一個功能強(qiáng)大的網(wǎng)頁腳,我們可以在其中定義校驗函數(shù),代碼中的過濾條件大多采用正則表達(dá)式來作判斷。在JavaScript中定義了校驗函數(shù)后,只需將該校驗函數(shù)綁定到表單的onSubmit屬性即可運(yùn)行。客戶端校驗是在用戶輸入數(shù)據(jù)提交到后臺服務(wù)器之前進(jìn)行的,主要防止由于用戶的誤操作帶來的異常。

3 服務(wù)器端校驗

只有客戶端校驗防止異常發(fā)生是不夠的,有些惡意的用戶可以輕易地越過客戶端校驗,直接向該Action的URL提交數(shù)據(jù),這樣就會產(chǎn)生很大的安全風(fēng)險,所以服務(wù)器端的校驗是很必要的。服務(wù)器端校驗主要有兩種方式:一種是手動完成輸入校驗[6],即重寫validate()和validateXxx()方法,但這種方法要手動編寫大量的代碼,并且代碼復(fù)用性不高。這里我們不作討論。另一種是編寫校驗規(guī)則文件[7],即為Action指定一個XML配置文件用于校驗,該文件指定了Action屬性必須滿足怎樣的規(guī)則。除了校驗規(guī)則文件的代碼格式外,文件名和文件路徑也很重要,其中文件名應(yīng)遵守一下規(guī)則:<Action名字>-validation.xml,并且該文件應(yīng)該保存在與Action Class文件相同的路徑下。

4 實例

下面我們利用一個簡單實例向大家展示數(shù)據(jù)校驗,這是一個向簡歷系統(tǒng)中增加人員信息,要求人員姓名和電話號碼不能為空,電話號碼必須為4-25位數(shù)字。

首先,客戶端校驗,在addperson.jsp文件中嵌入一段JavaScript代碼,該代碼為:

<script language=”JavaScript”>

function trim(s){

return s.replace(/^s*/,””).replace(/^s* $/,””);

}

function validate(){

var errStr=””;//保存錯誤信息

var form=document.getElementById(“myform”);

var name=trim(form.Name.value);

var telephone=trim(form.Telephone.value);

if(name==””||name==null){

errStr+=”姓名必須輸入”;

}

if(telephone==””||telephone==null){

errStr+=” 電話號碼必須輸入”;

}

elseif(!/^w(4,25)$/.test(telephone)){

errStr+=” 電話號碼必須是數(shù)字,且長度為4到25之間”;

}

if(errStr==””){

return true;

}

else{

alert(errStr);//輸出錯誤信息

return false;

}

</script>

還要在表單標(biāo)簽中調(diào)用這個函數(shù):

<form id=”myform”name=”form”onSubmit=”return validate(this);”>

當(dāng)我們提交表單時,如果沒有輸入姓名和電話號碼,表單將不會提交成功,并彈出如圖2對話框:

圖2 客戶端校驗彈出框圖

其次,服務(wù)器端校驗,我們要在相應(yīng)Action同一目錄下,建立一個文件名為addperson-validation.xml,主要代碼如下:

<validators>

<field name=”res.name”>

<field-validator type=”requiredstring”short-circuit=”ture”>

<message>請輸入姓名! </message>

<field-validator>

</field>

<field name=”res.telephone”>

<field-validator type=”requiredstring”short-circuit=”ture”>

<message>請輸入電話號碼! </message>

</field-validator>

<field-validator type=”stringlength”short-circuit=”ture”>

<param name=”minlength”>4</param>

<param name=”maxlength”>25</param>

<param name=”trim”>true</param>

<message>電話號碼必須介于4到25個字符之間! </message>

</field-validator>

</field>

</validators>

并且還要在Struts2的配置文件中,指定如果輸入被攔截,應(yīng)跳轉(zhuǎn)的頁面即可。如果用戶跳過客戶端校驗,沒有輸入姓名和電話號碼的話,將會出現(xiàn)如圖3的頁面,表單提交不成功。

圖3 服務(wù)器端校驗頁面圖

以上就是一個完整的校驗過程,它可以有效的防止由于用戶輸入不規(guī)范產(chǎn)生的異常情況。

5 結(jié)束語

基于Struts2框架的數(shù)據(jù)校驗是很強(qiáng)大的數(shù)據(jù)校驗,它提供了很多常用的校驗規(guī)則,采用這種校驗方式,程序員可以基本上不需要為校驗編寫太多的代碼,并且好擴(kuò)展。這種方式不僅可以在Struts2的項目開發(fā)中應(yīng)用,它的這種模式思想還可以移植到一般的Java和XML相結(jié)合的Web應(yīng)用開發(fā)中,甚至于基于J2EE的大型系統(tǒng)的應(yīng)用開發(fā)中。

[1]彭劍.WEB信息系統(tǒng)中的數(shù)據(jù)校驗問題[J].重慶工商大學(xué)學(xué)報(自然科學(xué)版),2005,22(3):277-280.

[2]TED H.struts in action[M].USA.Manning Publications Co.2002:139-142.

[3]何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算機(jī)工程,2002,28(6):274-281.

[4]李剛.Struts2權(quán)威指南[M].北京:電子工業(yè)出版社,2007:242-265.

[5]劉聰.零基礎(chǔ)學(xué)Java Web開發(fā)[M].北京:機(jī)械工業(yè)出版社,2007:28-34.

[6]劉京華,武冬,郅曉娜,等.Java Web整合開發(fā)王者歸來[M].北京:清華大學(xué)出版社,2010:477-478.

[7]孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004:229-250.

猜你喜歡
服務(wù)器端表單電話號碼
移動App表單組件體驗設(shè)計
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計
淺談網(wǎng)頁制作中表單的教學(xué)
不能忘記的電話號碼
基于Qt的安全即時通訊軟件服務(wù)器端設(shè)計
使用智能表單提高工作效率
基于Qt的網(wǎng)絡(luò)聊天軟件服務(wù)器端設(shè)計
打電話
基于C/S架構(gòu)的嵌入式監(jiān)控組態(tài)外設(shè)擴(kuò)展機(jī)制研究與應(yīng)用
表單化管理國內(nèi)對比研究