精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲一区电影在线观看| 国产精品国产精品国产专区不片| 亚洲免费电影在线| 欧美在线视频一区| 日韩精品第1页| 国语对白永久免费| 51精品国产| 国产精品无码永久免费888| 性色av香蕉一区二区| 九九热99视频| 国产黄色免费在线观看| 狂野欧美xxxx韩国少妇| 国产精品乱人伦| 日本成人黄色片| 性生交大片免费全黄| 国产成人一二片| 亚洲在线中文字幕| 51国偷自产一区二区三区的来源 | 亚洲国产欧美一区二区三区不卡| 久久久久久久久97| 亚洲国产视频二区| 在线观看区一区二| 亚洲欧洲精品一区| 天堂8在线视频| 亚洲国产美女| 亚洲国语精品自产拍在线观看| 免费看毛片的网址| 天天色综合av| 国产精品一区二区三区乱码| 日韩在线视频播放| 91性高潮久久久久久久| 国产在线高清视频| 国产精品一二三区在线| 国产精品第2页| 国产91丝袜美女在线播放| 成人美女视频| 国产日产精品1区| 97色在线视频观看| 欧产日产国产v| 99re6热只有精品免费观看| 亚洲国产精品尤物yw在线观看| 2014亚洲精品| 国产一区二区麻豆| 国内精品久久久久国产盗摄免费观看完整版| 91精品中文字幕一区二区三区 | 午夜久久久久| 精品国产一区二区三区不卡| 免费观看国产精品视频| 国产一二在线观看| 激情五月播播久久久精品| 精品中文字幕乱| 久久人人妻人人人人妻性色av| 亚洲最大网站| 欧美日韩人人澡狠狠躁视频| 日韩一区不卡| wwwav在线播放| 丝袜亚洲精品中文字幕一区| 日韩在线观看免费全集电视剧网站 | 久久国产剧场电影| 久久久久久久97| 四虎国产精品成人免费入口| 国产美女亚洲精品7777| 偷偷要91色婷婷| 亚洲午夜激情| 丰满少妇被猛烈进入| 蜜桃视频一区| 美女福利视频一区| 强伦人妻一区二区三区| 中文字幕成人| 欧美性极品少妇精品网站| 制服诱惑一区| 人人妻人人澡人人爽久久av | 精品国产不卡| 欧美一区二区三区免费大片 | 69av视频在线| 激情视频一区二区三区| 中文字幕久久精品| 国产十八熟妇av成人一区| 四虎视频在线精品免费网址| 黄色精品一区二区| 亚欧无线一线二线三线区别| 日本视频在线播放| 97久久超碰精品国产| 91牛牛免费视频| 成年人晚上看的视频| 日韩视频一区二区三区在线播放免费观看| 深夜福利日韩在线看| www中文在线| 国产在视频线精品视频www666| 亚洲第一精品久久忘忧草社区| 色噜噜狠狠一区二区| 成人免费直播| 欧美丰满嫩嫩电影| 污污网站免费看| 精品国产欧美| 精品性高朝久久久久久久| 日批免费观看视频| 日韩精品三级| 欧美一区二区日韩| 国产夫妻性爱视频| 欧美色图婷婷| 亚洲精品99久久久久| 欧美成人国产精品一区二区| 亚州av乱码久久精品蜜桃| 中文字幕一区二区三区电影| 538精品在线观看| 麻豆九一精品爱看视频在线观看免费| 91精品久久久久久久久| 一级特黄aa大片| av在线一区二区| 国产精选一区二区| 午夜精品久久久久久久第一页按摩 | 亚洲一区二区三区四区的| 手机成人av在线| 欧美r级在线| 国产精品传媒视频| 精品国产一二三四区| 成人97精品毛片免费看| 亚洲少妇中文在线| 法国伦理少妇愉情| 亚欧日韩另类中文欧美| 亚洲精品在线观看www| frxxee中国xxx麻豆hd| 午夜在线精品| 国产精品9999| 国产成人精品一区二区色戒| 免费观看一级特黄欧美大片| 成人黄色av播放免费| 国产伦精品一区二区三区视频痴汉| 美女视频黄 久久| 久久久久se| av影片在线看| 亚洲乱码一区二区三区在线观看| 久久精品99国产| 国产原创一区| 日韩视频免费观看高清完整版| 特黄特色免费视频| 日韩高清影视在线观看| 欧美成人精品不卡视频在线观看| 欧美另类高清videos的特点| 久久免费视频色| 亚洲欧美在线网| 向日葵视频成人app网址| 欧美日韩不卡一区| 性高潮久久久久久| 最近国产精品视频| 久久亚洲精品中文字幕冲田杏梨| 国产少妇在线观看| 国产精品日本| 91久久精品国产| 一区二区三区视频在线观看视频| 在线中文字幕一区| 国产一级久久久久毛片精品| 欧美在线免费| 4444kk亚洲人成电影在线| 中文字幕资源网在线观看| 精品美女永久免费视频| 波多野结衣有码| 羞羞视频在线观看欧美| 欧美日韩国产三区| 99自拍视频在线观看| 欧美一区二区三区色| 永久免费看黄网站| 成人av资源站| 最新精品视频| 三级欧美日韩| 97久久精品人人澡人人爽缅北| 天堂av一区二区三区| 欧美午夜精品久久久久久人妖| 亚洲AV无码国产成人久久| 日韩国产高清在线| 国产区日韩欧美| 日本免费在线观看| 日韩小视频在线观看专区| 国产亚洲精品女人久久久久久| 成人免费高清在线| 亚洲欧美一二三| 91成人精品在线| 欧洲成人在线视频| 婷婷成人激情| 精品国产露脸精彩对白| 国产性猛交╳xxx乱大交| 国产婷婷色一区二区三区| 色戒在线免费观看| 精品1区2区3区4区| 日本免费高清一区| 岛国av在线播放| 欧美一区二区视频在线观看2020| 免费一级黄色大片| 国精产品一区一区三区mba桃花 | 秋霞a级毛片在线看| 欧美v亚洲v综合ⅴ国产v| 国产第一页精品| 国产精品正在播放| www.亚洲天堂网| 天天射综合网视频| 国产精品综合不卡av| 国产在线观看免费网站| 7777精品伊人久久久大香线蕉完整版| 久久久久久欧美精品se一二三四| 久久综合久久综合九色| 99中文字幕在线| 婷婷中文字幕一区| 狠狠色综合色区| 免费影视亚洲| 日韩天堂在线观看| 99超碰在线观看| 久久综合久久鬼色中文字| 成年人网站av| 日韩精品欧美精品| 国产成人永久免费视频| 4438全国亚洲精品观看视频| 国产成人精品一区| 2018av在线| 欧美精品一区二区三区很污很色的| 久久久久久无码精品大片| 亚洲午夜一区二区| 国产精品国产三级国产传播| 91在线观看地址| av不卡中文字幕| 国产一区二区不卡老阿姨| 特级西西444| 教室别恋欧美无删减版| 国内一区在线| swag国产精品一区二区| 成人免费直播live| 国产精品4hu.www| 日韩在线播放一区| 精品国产亚洲av麻豆| 欧美视频一区二区三区四区 | 亚洲精品国产精品国| 亚洲国产一区二区在线播放| 欧美性猛交xxxx乱大交少妇| 国产美女在线精品| 日日干夜夜操s8| 热久久久久久久| 看一级黄色录像| 国产精品白丝一区二区三区| 91入口在线观看| 96视频在线观看欧美| 国产欧美日韩免费| 色猫猫成人app| 欧美大奶子在线| 国产精品一卡二卡三卡| 日日噜噜噜夜夜爽亚洲精品| 第一福利在线| 伊人激情综合网| 国内精品久久久久久久久久久| 亚洲一区影音先锋| 麻豆亚洲av熟女国产一区二| 亚洲色图制服诱惑| 欧美bbbbb性bbbbb视频| 99久久免费精品高清特色大片| 亚洲黄色小说在线观看| 成人性生交大片免费看中文| 潘金莲一级淫片aaaaaaa| 高清不卡一区二区在线| 国产一区亚洲二区三区| 欧美va天堂在线| 欧美国产视频一区| 最新成人av网站| 国产精品-区区久久久狼| 久久久蜜桃一区二区人| 亚洲视频在线a| 亚洲午夜电影| 黄页网站大全在线观看| 性8sex亚洲区入口| 九一精品在线观看| 国产日韩欧美三级| 国产一级不卡毛片| 国内精品不卡在线| 黄色av网址在线观看| 久久一留热品黄| 老司机福利在线观看| 亚洲美女屁股眼交3| 国产乡下妇女做爰| 亚洲美女免费在线| 欧美不卡视频在线观看| 亚洲精品美腿丝袜| 婷婷国产成人精品视频| 亚洲精品视频在线| 日韩特级黄色片| 亚洲成人高清在线| 秋霞av一区二区三区| 精品国产福利视频| 18国产免费视频| 日韩一级片在线播放| 香蕉视频911| 亚洲成人av片在线观看| 毛片网站在线观看| 日韩精品视频在线观看网址| 亚洲乱码国产乱码精品精软件| 日韩精品在线观| 精精国产xxxx视频在线| 77777亚洲午夜久久多人| 国产第一页在线视频| 欧美夫妻性生活视频| av毛片在线免费| 亲子乱一区二区三区电影 | 99国内精品| 免费在线观看污网站| 日本亚洲最大的色成网站www| 成人性生交视频免费观看| 26uuu精品一区二区| jizz日本免费| 日韩一区日韩二区| 手机av在线看| 国产精品美女久久久久av爽李琼| 久久99久久98精品免观看软件| 在线观看亚洲精品视频| 免费av网站观看| 久久精品一偷一偷国产| 麻豆网站在线观看| 97avcom| 日韩一级淫片| 一本一生久久a久久精品综合蜜 | 性金发美女69hd大尺寸| 激情久久99| 欧美高清性xxxxhd | 国产精品免费视频一区| 天天做天天爱夜夜爽| 精品少妇一区二区三区日产乱码 | 亚洲第一精品网站| 色老头一区二区三区在线观看| 亚洲欧美韩国| 国产成人精品电影久久久| 911亚洲精品| 黄色一级大片免费| 亚洲精选一区| 无码人妻一区二区三区精品视频| 国产精品成人一区二区艾草| 天天射天天干天天| 亚洲男人的天堂网站| 精品美女视频在线观看免费软件| 久久久久国产精品免费网站| 精品一区二区三区中文字幕视频 | 欧美色图首页| 你懂的av在线| 福利一区二区在线| 免费人成年激情视频在线观看| 欧美理论片在线| 精品美女在线观看视频在线观看| 国产精品羞羞答答| 日本一二区不卡| 天天想你在线观看完整版电影免费 | 九九九热精品免费视频观看网站| 91国产一区| 国产精品久久成人免费观看| 久久成人羞羞网站| 欧美肥妇bbwbbw| 日韩欧美综合在线| 好看的中文字幕在线播放| 国产二区不卡| 日本成人小视频| 久久国产精品视频在线观看| 成a人片亚洲日本久久| 五月天婷婷丁香| 日韩精品欧美国产精品忘忧草 | 亚洲激情av| 狠狠人妻久久久久久综合蜜桃| 精品久久久免费| 九色国产在线观看| 国产精品一二三视频| 一本一本久久a久久综合精品| 免费av观看网址| 久久亚洲二区三区| 中文字幕+乱码+中文字幕明步| 精品久久久久久久一区二区蜜臀| 欧美卡一卡二| 麻豆视频成人| 欧美婷婷在线| 丰满大乳奶做爰ⅹxx视频 | 日日碰狠狠躁久久躁婷婷| 日本一区二区三区四区| 国产一区二区网站| 久久久久久久久网站| 免费久久精品| 手机免费看av网站| 亚洲成人av电影| 成年人在线观看| 91极品女神在线| 欧美精选视频在线观看| 51自拍视频在线观看| 午夜视频一区在线观看| 99久久精品国产色欲| 最近2019年中文视频免费在线观看| 91丨精品丨国产| 欧美日韩性生活片| 国产精品久久久久久久久久久免费看 | 精品va天堂亚洲国产| 偷拍精品精品一区二区三区| 国产综合欧美在线看| 男人的j进女人的j一区| 精品无码久久久久久久久| 亚洲日韩中文字幕| 亚洲日本va午夜在线电影| 精品久久久久久久无码| 一区二区不卡在线播放| av网站无病毒在线| 久久久精彩视频|