Struts2入門(四)——數(shù)據(jù)輸入驗(yàn)證
一、前言
1.1、什么是輸入驗(yàn)證?為什么需要輸入驗(yàn)證?
在上一篇文章中,我們學(xué)習(xí)了數(shù)據(jù)類型轉(zhuǎn)換,我們提到了表示層數(shù)據(jù)處理的兩個(gè)方法,也提到了用戶輸入數(shù)據(jù)需要進(jìn)行類型轉(zhuǎn)換才能得到我們想要的數(shù)據(jù),那么,我們?cè)趺创_定類型轉(zhuǎn)換后的數(shù)據(jù),是我們想要的數(shù)據(jù)呢?這里有點(diǎn)繞。你可以這樣想:一個(gè)成年男子年齡是18歲,你現(xiàn)在想要得到18這個(gè)數(shù)據(jù),但是,用戶輸入32,經(jīng)過(guò)類型轉(zhuǎn)換也是對(duì)的,但是數(shù)據(jù)不是你想要的。這時(shí)候,我們要怎么辦?所以輸入驗(yàn)證在這里就有用處了。
類型轉(zhuǎn)換和輸入驗(yàn)證的關(guān)系是:類型轉(zhuǎn)換是輸入驗(yàn)證的前提,如果類型轉(zhuǎn)換都出錯(cuò)了,那就不用再進(jìn)行輸入驗(yàn)證了。但是很多時(shí)候類型轉(zhuǎn)換和輸入驗(yàn)證是同時(shí)完成的。
輸入驗(yàn)證有兩種:
1、客戶端驗(yàn)證;
2、服務(wù)端驗(yàn)證。這里主要講解的是服務(wù)端驗(yàn)證(重寫(xiě)ValidateXxx方法和xml配置文件驗(yàn)證)
1.2、重寫(xiě)ValidateXxx方法的驗(yàn)證流程
1、類型轉(zhuǎn)換器負(fù)責(zé)對(duì)字符串的請(qǐng)求參數(shù)進(jìn)行類型轉(zhuǎn)換,并將這些值設(shè)置成Action的屬性值
2、在執(zhí)行類型轉(zhuǎn)換過(guò)程中可能出現(xiàn)異常,如果出現(xiàn)異常,異常信息會(huì)自動(dòng)保存到ActionContext中,conversionError攔截器負(fù)責(zé)將其封裝到fieldError中
3、通過(guò)反射調(diào)用ValidateXxx()方法,其中Xxx是即將處理用戶請(qǐng)求的處理邏輯所對(duì)應(yīng)的方法名
4、調(diào)用Action類的Validate方法
5、如果上面的步驟沒(méi)有出現(xiàn)fieldError,將調(diào)用Action里處理用戶請(qǐng)求的處理方法,如果出現(xiàn)fieldError,系統(tǒng)將轉(zhuǎn)入input邏輯視圖所指定的視圖。
二、輸入驗(yàn)證
2.1、輸入驗(yàn)證這里講解的有兩種方式:
1、重寫(xiě)Validate方法或者自定義ValidateXxx方法(其中的Xxx是自己定義的名字,會(huì)先執(zhí)行該方法,在執(zhí)行Validate方法)
2、新建xml進(jìn)行驗(yàn)證
2.2、重寫(xiě)Validate方法
在MVC框架,都會(huì)提供規(guī)范的數(shù)據(jù)驗(yàn)證部分,Struts2在這里提供的是一個(gè)Validate方法,我們重寫(xiě)Validate方法就可以進(jìn)行輸入驗(yàn)證,但是,重寫(xiě)Validate方法有兩個(gè)點(diǎn)需要知道:1、Validate方法會(huì)在execute方法之前被執(zhí)行;2、Validate方法對(duì)所有的Action都會(huì)執(zhí)行校驗(yàn)規(guī)則,為了區(qū)別某一個(gè)Action,我們可以使用ValidateXxx方法。
注意:以下的例子是局部類型轉(zhuǎn)換和輸入驗(yàn)證一起使用的例子。
簡(jiǎn)單的注冊(cè)驗(yàn)證例子:
新建實(shí)體類User:
![](/attached/autodown/3439cbd9-c70b-466d-8136-b22e29ce5165.gif)
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26
![學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)](http://m.roadsoft.com.cn/attached/image/templet/e87d53eb-cf7a-4689-887a-1cd260f416a5.jpg)