精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Struts2教程:使用Validation框架驗證數據

開發 后端
本文為Struts2教程,本部分教你如何使用Validation框架驗證數據。Struts2雖然在大版本號上是第二個版本,但基本上在配置和使用上已經完全顛覆了Struts1.x的方式。

在《Struts2教程4:使用validate方法驗證數據》中曾講到使用validate方法來驗證客戶端提交的數據,但如果使用validate方法就會將驗證代碼和正常的邏輯代碼混在一起,但這樣做并不利于代碼維護,而且也很難將過些代碼用于其他程序的驗證。在Struts2中為我們提供了一個Validation框架,這個框架和Struts1.x提供的Validation框架類似,也是通過XML文件進行配置。

一、服務端驗證

下面將給出一個例子來演示如何使用Struts2的validation框架來進行服務端驗證。我們可以按著如下四步來編寫這個程序:

【第1步】建立Action類(NewValidateAction.java)

  1. package action;  
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.  
  5. public class NewValidateAction extends ActionSupport  
  6. {  
  7.     private String msg;  // 必須輸入  
  8.     private int age;   // 在13和20之間  
  9.     public String getMsg()  
  10.     {  
  11.         return msg;  
  12.     }  
  13.     public void setMsg(String msg)  
  14.     {  
  15.         this.msg = msg;  
  16.     }  
  17.     public int getAge()  
  18.     {  
  19.         return age;  
  20.     }  
  21.     public void setAge(int age)  
  22.     {  
  23.         this.age = age;  
  24.     }  
  25. }  

下面我們來驗證msg和age屬性。

【第2步】配置Action類,struts.xml的代碼如下:

  1. < ?xml version="1.0" encoding="UTF-8" ?> 
  2. < !DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd"> 
  5. < struts> 
  6.     < package name="demo" extends="struts-default" namespace="/test"> 
  7.         < action name="new_validate" class="action.NewValidateAction"> 
  8.             < result name="input">/validate_form.jsp< /result> 
  9.             < result name="success">/validate_form.jsp< /result> 
  10.         < /action> 
  11.     < /package> 
  12. < /struts> 

【第3步】編寫驗證規則配置文件

這是一個基于XML的配置文件,和struts1.x中的validator框架的驗證規則配置文件類似。但一般放到和要驗證的.class文件在同一目錄下,而且配置文件名要使用如下兩個規則中的一個來命名:

< ActionClassName>-validation.xml

< ActionClassName>-< ActionAliasName>-validation.xml

其中< ActionAliasName>就是struts.xml中< ation>的name屬性值。在本例中我們使用***種命名規則,所以文件名是NewValidateAction-validation.xml。文件的內容如下:

  1. < ?xml version="1.0" encoding="UTF-8"?> 
  2. < !DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  3. "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 
  4. < validators> 
  5.     < field name="msg"> 
  6.         < field-validator type="requiredstring"> 
  7.             < message>請輸入信息< /message> 
  8.         < /field-validator> 
  9.     < /field> 
  10.     < field name="age"> 
  11.         < field-validator type="int"> 
  12.             < param name="min">13< /param> 
  13.             < param name="max">20< /param> 
  14.             < message> 
  15.                 必須在 13至20之間  
  16.             < /message> 
  17.         < /field-validator> 
  18.     < /field> 
  19. < /validators> 

這個文件使用了兩個規則:requiredstring(必須輸入)和int(確定整型范圍)。關于其他更詳細的驗證規則,請讀者訪問http://struts.apache.org/2.0.11.1/docs/validation.html來查看。

【第4步】編寫數據錄入JSP頁。

在Web根目錄中建立一個validate_form.jsp文件,代碼如下:

  1. < %@ page language="java" import="java.util.*" pageEncoding="GBK"%> 
  2. < %@ taglib prefix="s" uri="/struts-tags" %> 
  3. < link rel="stylesheet" type="text/css" href="< s:url value="/styles/styles.css"/>"> 
  4. < html> 
  5.   < head> 
  6.     < title>驗證數據< /title> 
  7.   < /head>    
  8.   < body> 
  9.     < s:form action="new_validate" namespace="/test" > 
  10.         < s:textfield name="msg" label="姓名"  /> 
  11.         < s:textfield name="age" label="年齡"/>   
  12.         < s:submit/> 
  13.     < /s:form>   
  14.   < /body>    
  15. < /html> 

大家要注意一下,如果在struts.xml的< package>標簽中指定namespace屬性,需要在< s:form>中也將namespace和action分開寫,如上面代碼所示。不能將其連在一起,Struts2需要分開的action和namespace。如下面的代碼是錯誤的:

< s:form action="/test/new_validate" >

   ... ...

< /s:form>

在上面的程序中還使用了一個styles.css來定制錯誤信息的風格。代碼如下:

.label {font-style:italic; }

.errorLabel {font-style:italic; color:red; }

.errorMessage {font-weight:bold; color:red; }

需要在Web根目錄中建立一個styles目錄,并將styles.css   

假設Web工程的上下文路徑是validation,可以使用如下的URL來測試這個程序:

http://localhost:8080/validation/validate_form.jsp

顯示結果如圖1所示。

圖1 顯示結果 

圖1

二、客戶端驗證

在Struts2中實現客戶端驗證非常簡單,只需要在< s:form>中加入一個validate屬性,值為true。如< s:form validate="true" ... > ... < /form>即可。

三、驗證嵌套屬性

有一類特殊的屬性,即這個屬性的類型是另外一個JavaBean,如有一個User類,代碼如下:

  1. package data;  
  2.  
  3. public class User  
  4. {  
  5.     private String name;  
  6.     private int age;  
  7.     public String getName()  
  8.     {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name)  
  12.     {  
  13.         this.name = name;  
  14.     }  
  15.     public int getAge()  
  16.     {  
  17.         return age;  
  18.     }  
  19.     public void setAge(int age)  
  20.     {  
  21.         this.age = age;  
  22.     }  
  23. }  

在NewValidateAction類中加一個user屬性,代碼如下:

  1. package action;  
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4. import data.User;  
  5.  
  6. public class NewValidateAction extends ActionSupport  
  7. {  
  8.     private String msg;  
  9.     private int age;  
  10.     private User user;  
  11.     public String getMsg()  
  12.     {  
  13.         return msg;  
  14.     }  
  15.  
  16.     public void setMsg(String msg)  
  17.     {  
  18.         this.msg = msg;  
  19.     }  
  20.     public int getAge()  
  21.     {  
  22.         return age;  
  23.     }  
  24.     public void setAge(int age)  
  25.     {  
  26.         this.age = age;  
  27.     }  
  28.     public User getUser()  
  29.     {  
  30.         return user;  
  31.     }  
  32.       
  33.     public void setUser(User user)  
  34.     {  
  35.         this.user = user;  
  36.     }  
  37. }  

如果要驗證NewValidateAction中的user屬性,可以使用visitor驗證器。操作過程如下:

首先在NewValidateAction-validation.xml中加入一個< field>標簽,代碼如下:

  1. < ?xml version="1.0" encoding="UTF-8"?> 
  2. < !DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  3. "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 
  4. < validators> 
  5.        
  6.     < field name="user"> 
  7.     < field-validator type="visitor"> 
  8.             < param name="context">abc< /param> 
  9.             < param name="appendPrefix">true< /param> 
  10.             < message>User:< /message> 
  11.         < /field-validator> 
  12.     < /field> 
  13. < /validators> 

其中context參數將作為驗證User類屬性的文件名的一部分,如user屬性返回一個User對象,那么用于驗證User對象屬性的文件名為User-abc-validation.xml。這個文件要和User.class文件在同一個目錄中。appendPrefix表示是否在字段里加user,如果為true,Struts2就會使用user.name在form提交的數據中查找要驗證的數據。這個屬性的默認值是true。如果出錯,Struts2會將< message>標簽中的信息加到User-abc-validation.xml文件中的相應錯誤信息前面。

User-abc-validation.xml文件的內容如下:

  1. < ?xml version="1.0" encoding="UTF-8"?> 
  2. < !DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"  
  3.  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 
  4. < validators> 
  5.     < field name="name"> 
  6.         < field-validator type="requiredstring"> 
  7.             < message>請輸入name< /message> 
  8.         < /field-validator> 
  9.     < /field> 
  10.     < field name="age"> 
  11.         < field-validator type="int"> 
  12.             < param name="min">5< /param> 
  13.             < param name="max">20< /param> 
  14.             < message> 
  15.                 必須在 5至20之間  
  16.             < /message> 
  17.         < /field-validator> 
  18.     < /field> 
  19. < /validators> 
  20.  

下面修改validate_form.jsp,代碼如下:

  1. < s:form validate="true" action="new_validate" namespace="/test" > 
  2.      < s:textfield name="msg" label="姓名"  /> 
  3.      < s:textfield name="age" label="年齡"/>   
  4.      < s:textfield name="user.name" label="姓名1"  /> 
  5.      < s:textfield name="user.age" label="年齡1"/>   
  6.     < s:submit/> 
  7. < /s:form> 

大家可以看到,***兩個< s:textfield>的name屬性是user.name和user.age,正好是加了前綴的。

現在重新訪問 http://localhost:8080/validation/validate_form.jsp,驗證界面如圖2所示。

圖2 驗證界面 

經筆者測試,使用visitor無法以客戶端驗證的方式來驗證user屬性,但NewValidateAction中其他的屬性可以使用客戶端測試。

【編輯推薦】

  1. Struts2教程:使用validate方法驗證數據
  2. Struts2教程:struts.xml常用配置解析
  3. Struts2教程:處理一個form多個submit
  4. Struts2教程:***個Struts2程序
  5. Struts2中POI在內存中生成文件并下載
責任編輯:yangsai 來源: BlogJava
相關推薦

2009-02-04 13:13:03

2009-06-25 15:33:12

Struts2教程使用validate驗證數據

2009-06-04 11:08:32

struts2 val框架

2009-02-04 12:00:08

2011-03-30 09:03:57

struts2

2009-06-05 09:58:20

struts2驗證用戶注冊

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-02-04 10:51:07

2009-06-03 14:19:34

Struts2Guice

2009-06-25 16:04:30

2009-06-25 15:26:25

Struts2教程struts.xml常

2009-06-25 15:50:03

Struts2教程上傳任意多個文件

2009-02-04 15:04:13

2009-06-25 15:54:42

Struts2教程攔截器

2012-05-10 14:00:06

StrutsjsonJava

2009-02-04 11:37:15

2009-07-29 09:54:34

struts2和str

2009-06-04 09:20:19

struts2 if標使用

2009-02-04 14:00:59

2009-02-04 14:19:38

點贊
收藏

51CTO技術棧公眾號

美女网站视频色| 人妻熟女一二三区夜夜爱| 99精品久久久久久中文字幕 | 久久精品99久久久| 免费av在线一区| 中文字幕a在线观看| 91亚洲精品| 亚洲永久免费视频| 日本在线免费观看一区| 精品人妻少妇嫩草av无码专区| 国产日韩欧美一区在线| 日韩中文字幕网| www.日本高清| 欧美日韩破处视频| 精品久久久久久久久久久久| 伊人情人网综合| 三级在线观看| 激情深爱一区二区| 日韩免费黄色av| 久久久久久久久久久网| 激情综合网五月| 亚洲国产古装精品网站| 午夜视频在线观| 性欧美1819sex性高清| 亚洲午夜久久久久久久久电影网| 亚洲美女喷白浆| 精品久久久99| 日本免费久久| 午夜视频一区二区三区| 久久精品国产精品亚洲精品色| 肉丝一区二区| 成人国产精品免费观看视频| 成人xxxx视频| 一级黄色在线观看| 国产成人精品免费视| 日韩欧美国产小视频| 亚洲一区在线不卡| 欧美xxx视频| 婷婷久久综合九色国产成人| 久久久天堂国产精品| 思思99re6国产在线播放| 久久欧美中文字幕| 精品日韩美女| 日本免费一区视频| 国产精品乱看| 久久噜噜噜精品国产亚洲综合| 蜜桃视频最新网址| 久久美女视频| 日韩中文字幕在线播放| 欧美福利第一页| 国产欧美一区| 亚洲视频自拍偷拍| 亚洲激情视频小说| 妖精视频一区二区三区| 亚洲美女激情视频| 国产精品jizz| 国产精品亚洲二区| 亚洲亚裔videos黑人hd| jizz中文字幕| 色综合五月天| 最近2019中文字幕第三页视频| 男人插女人下面免费视频| 涩涩涩在线视频| 一本到三区不卡视频| 成人在线观看黄| 欧美福利在线播放| 欧美性猛片xxxx免费看久爱| 美女一区二区三区视频| 成人国产精选| 在线综合亚洲欧美在线视频| 亚洲视频在线不卡| 777久久精品| 亚洲第五色综合网| 成年人的黄色片| 国产精品一区高清| 综合激情国产一区| 黑鬼狂亚洲人videos| 欧美视频亚洲视频| 欧美一级视频免费在线观看| 黄色网址中文字幕| 加勒比av一区二区| 国产91免费视频| 青青九九免费视频在线| 日本一区二区三区国色天香| 一区二区在线观看网站| 午夜dj在线观看高清视频完整版| 亚洲丰满少妇videoshd| 欧美 国产 小说 另类| 九九热这里有精品| 精品国产成人系列| 亚洲黄色小说视频| 欧美成人有码| 青青在线视频一区二区三区| 888奇米影视| av激情亚洲男人天堂| 四虎影院一区二区三区| 肉肉视频在线观看| 色噜噜久久综合| 三日本三级少妇三级99| 日韩av字幕| x99av成人免费| 国产成人无码精品亚洲| 九色综合国产一区二区三区| 97色在线观看免费视频| 天天综合久久综合| 懂色av一区二区三区免费看| 日本在线免费观看一区| 精品精品导航| 欧美性猛交xxxxxx富婆| 深田咏美中文字幕| 99久久亚洲精品蜜臀| 7777kkkk成人观看| 国产女人18毛片水18精| 久久久精品综合| 人妻av无码专区| 日韩黄色三级| 亚洲视频欧洲视频| 久久精品视频6| 精品一区二区三区免费毛片爱| 久久久久久国产精品mv| 少女频道在线观看高清| 欧美人伦禁忌dvd放荡欲情| 中文字幕日韩三级片| 午夜国产精品视频| 国产欧美日韩精品在线观看 | 性无码专区无码| 国产精品综合视频| 亚洲欧洲在线一区| 日韩免费福利视频| 日韩成人在线视频| 国产五月天婷婷| 国产大陆精品国产| 蜜臀在线免费观看| 八戒八戒神马在线电影| 91高清视频在线| 成人影视免费观看| 国产日韩一区二区三区在线| 动漫3d精品一区二区三区| 日本视频在线观看| 欧美日韩视频在线观看一区二区三区 | 欧美色欧美亚洲另类七区| 久久亚洲资源| 日韩美女一区二区三区| 久久免费看少妇高潮v片特黄| 强制捆绑调教一区二区| 水蜜桃一区二区| 成人1区2区| 在线播放亚洲激情| 久草视频在线免费| 国产丝袜欧美中文另类| 成年人在线观看视频免费| 欧美日韩国产传媒| 国产精品扒开腿爽爽爽视频| 成人在线观看一区| 欧美亚洲图片小说| 久久久久麻豆v国产| 麻豆成人av在线| 椎名由奈jux491在线播放| 亚洲香蕉久久| 欧美精品生活片| 国精产品一品二品国精品69xx| 亚洲一级二级在线| 日韩精品视频一区二区| 中文久久精品| 日韩欧美视频一区二区| 日韩成人亚洲| 久久精品亚洲94久久精品| 99久久亚洲精品日本无码| 一区二区三区四区国产精品| 51自拍视频在线观看| 欧美成人精品| 精品在线视频一区二区| 欧美久久天堂| 在线观看精品自拍私拍| 国产wwwxxx| 午夜久久久久久| 少妇熟女视频一区二区三区| 亚洲a一区二区三区| 国产精成人品localhost| 涩涩视频在线免费看| 中文字幕欧美国内| 国产激情视频在线播放| 天天综合网 天天综合色| 亚洲精品国产一区黑色丝袜 | 亚洲精品无码一区二区| 久久精品亚洲| 亚洲精品中文字幕在线| 一区二区三区国产好| 日韩av色在线| 性欧美ⅴideo另类hd| 日韩精品小视频| 国产一区二区在线不卡| 午夜精品久久久久久久99水蜜桃 | 川上优的av在线一区二区| 制服丝袜成人动漫| av大片免费观看| 久久久久久无码午夜精品直播| 精品制服美女久久| 精品少妇在线视频| 日韩精品免费一区二区三区| 国产精品亚洲综合| 成人在线观看免费视频| 国模极品一区二区三区| 香蕉视频网站在线观看| 亚洲电影免费观看| 国产又黄又爽视频| 欧美视频一二三| 少妇久久久久久被弄高潮| 久久精品人人做人人综合| 国产人妻精品久久久久野外| 日韩综合一区二区| 国产性生活免费视频| 亚洲宅男网av| 不卡视频一区二区三区| 国产成人福利夜色影视| 26uuu另类亚洲欧美日本一| 黄色免费网站在线| 亚洲最新av在线| 亚洲av毛片成人精品| 中文字幕综合网| 成人免费网站黄| 成人久久久精品乱码一区二区三区| 婷婷丁香激情网| 亚洲制服av| 国产无限制自拍| 黄色亚洲大片免费在线观看| 99久久久无码国产精品性色戒| 欧美精品色图| 蜜桃视频在线观看成人| 国产精品videossex| 亚洲一区二区三区久久| 福利一区和二区| 91禁国产网站| 极品美鲍一区| 性色av一区二区三区| 女人黄色免费在线观看| 久久91亚洲精品中文字幕| 快射av在线播放一区| 日韩一级黄色av| 香港伦理在线| www.亚洲人.com| 麻豆视频在线观看免费网站| 中文字幕日韩综合av| av在线播放av| 中文字幕亚洲欧美日韩在线不卡| 国产高清视频在线观看| 亚洲色图激情小说| 加勒比一区二区三区在线| 亚洲毛片在线看| 大胆av不用播放器在线播放 | 一区二区毛片| 成人午夜免费在线| 99成人免费视频| 欧美日本视频在线观看| 9色精品在线| 两根大肉大捧一进一出好爽视频| 国产欧美一区二区色老头| 六月丁香婷婷激情| 亚洲欧美不卡| 韩国中文字幕av| 麻豆久久一区二区| 污污网站在线观看视频| 国产精品一区二区无线| 亚洲一级Av无码毛片久久精品| 成人av在线资源网站| 无套内谢大学处破女www小说| 久久综合资源网| 国产亚洲精品熟女国产成人| 亚洲欧洲另类国产综合| 免费无遮挡无码永久在线观看视频| 亚洲午夜电影在线| 国产三级av片| 欧美日韩一区二区三区在线看| 国产精品老熟女视频一区二区| 日韩一区二区三区精品视频| 日韩一级片免费在线观看| 亚洲乱码国产乱码精品精天堂| 国产区视频在线播放| 久久久av一区| freexxx性亚洲精品| 日本道色综合久久影院| 亚洲精品tv| 狠狠色综合欧美激情| 欧美三级美国一级| 超碰10000| 免费亚洲网站| 午夜影院免费观看视频| 91视视频在线直接观看在线看网页在线看| japanese中文字幕| 亚洲女人的天堂| 久久久黄色大片| 制服.丝袜.亚洲.中文.综合| 日韩一区二区三区中文字幕| 日韩一二三在线视频播| 亚洲精品福利电影| 91免费国产视频| 国产精品亚洲片在线播放| 日本xxxxx18| 噜噜爱69成人精品| 香蕉视频1024| 国产精品欧美精品| 羞羞影院体验区| 欧美一区二区免费视频| 二区在线视频| 国模私拍一区二区三区| 日韩一区中文| 欧美精品尤物在线| 黄色欧美成人| 韩国三级丰满少妇高潮| 国产亚洲一二三区| 日韩精品一区二区三| 欧美女孩性生活视频| 噜噜噜在线观看播放视频| 欧美黄色成人网| **欧美日韩在线| 欧美激情导航| 亚洲三级免费| 亚洲午夜精品在线观看| 国产精品久久久久久福利一牛影视| 永久免费看片在线播放| 日韩欧美高清一区| 日本在线播放| 国产美女被下药99| 国产在线观看91一区二区三区| 青青草成人免费在线视频| 国产福利电影一区二区三区| 日日操免费视频| 欧美性色黄大片手机版| 成人精品一区二区三区校园激情| 欧洲精品久久久| 美女主播精品视频一二三四| 精品一卡二卡三卡四卡日本乱码 | 三级在线观看网站| 欧美成人免费小视频| 日韩有码欧美| 在线国产精品网| 久久99精品久久久久久久久久久久 | 久久精品中文字幕免费mv| 成人a在线观看高清电影| 日本不卡一区二区三区在线观看| 西西裸体人体做爰大胆久久久| 久久久老熟女一区二区三区91| 亚洲图片欧美一区| www.成人精品| 欧美激情videos| youjizzjizz亚洲| 欧洲精品一区二区三区久久| 丁香婷婷综合色啪| 日本系列第一页| 日韩电影视频免费| 欧美成人黑人| 日韩精品第一页| 青青草97国产精品免费观看| 制服丨自拍丨欧美丨动漫丨| 欧美人成免费网站| av网站网址在线观看| 成人91视频| 亚洲一区国产| 老头老太做爰xxx视频| 欧美日韩美女一区二区| 欧美成人高清在线| 3d动漫精品啪啪一区二区三区免费 | 午夜精品免费视频| 色老板在线视频一区二区| 成人羞羞国产免费网站| 国产欧美视频一区二区三区| 夜夜躁很很躁日日躁麻豆| 欧美成人黑人xx视频免费观看| 丁香婷婷成人| 麻豆传传媒久久久爱| 国产精品麻豆视频| 亚洲黄色精品视频| 欧美一区亚洲一区| 国产成人精品三级高清久久91| 日韩在线一区视频| 亚洲最大色网站| 日韩精品福利| 国产在线久久久| 91久久夜色精品国产九色| 中文字幕狠狠干| 884aa四虎影成人精品一区| 国产精品国精产品一二| 青青草原亚洲| 国产精品中文字幕一区二区三区| 一级片免费网址| 中文字幕久热精品在线视频| 97se亚洲国产一区二区三区| 苍井空浴缸大战猛男120分钟| 亚洲欧美另类久久久精品2019| 天天干天天舔天天射| 国产精品视频免费在线观看| 国产一区清纯| 中文字幕在线观看免费高清| 日韩久久免费av| 日韩一级二级| heyzo亚洲| 亚洲日穴在线视频| 欧美日韩激情视频一区二区三区| 91日韩在线视频| 日韩高清不卡在线|