Struts2之输入校验
C05 Struts2的输入校验
Struts2的输入校验
●注意事项:
⏹分析客户端校验和服务器端校验的不同,讲解服务器端校验的必要性
⏹讲解validate()方法的校验和validateXxx()方法的校验
⏹讲解Struts2提供的非侵入性校验框架
●PPT第2~3页:10分钟
⏹讲解输入校验的种类和常用方法,区分客户端和服务器的输入校验
⏹明确服务器端校验的必要性
●PPT第4~7页:20分钟
⏹validate()方法的使用
⏹struts.xml的配置
●PPT第8~11页:10分钟
⏹输入校验功能的测试,分析validate方法的原理
●PPT第12页:10分钟
⏹讲解<s:fielderror/>标签的作用
⏹使用<s:fielderror/>标签显示错误信息
●PPT第13~16页:20分钟
⏹讲解validateXxx()方法输入校验的使用
⏹相关配置,如struts.xml
⏹相关代码编写,引导学生完成
●PPT第17页:15分钟
⏹分析以上两种输入校验方式的缺点,主要是其侵入性,增加了代码之间的耦合度
⏹讲解Struts2基于框架文件的输入校验方式
⏹理解Struts2校验框架的优势
●PPT第18~24页:10分钟
⏹编写struts2的字段校验例子
⏹配置输入校验规则文件,xml格式,理解各配置项的意义和配置方法
⏹Action类依然需要继承ActionSupport类
●PPT第25~26页:10分钟
⏹编写struts2的非字段校验例子
⏹分析校验规则文件和前面校验方法内容,找出相同点。
第3章 Struts2访问数据库及输入校验
应用Struts2校验框架(4) 校验框架( ) 应用 校验框架
在XML文件ห้องสมุดไป่ตู้配置校验器有两种方式:
使用<field> < field-validator ></field-validator></field> <validators> 标签对,如图(b)所示.
<field name="userName"> 配置文件 <field-validator type="requiredstring"> 图(b) <message>必须输入用户名</message> 待校验字段 </field-validator> 校验器 校验器 </field> <field name="password"> <field-validator type="requiredstring"> <message>必须输入密码</message> </field-validator> </field> </validators> 因为第二种方式 是以待校验字段为核 心集中配置校验器, 校验器 便于后期维护管理, 所以开发时通常使用 此种方式
编程方式实现Struts2输入校验 输入校验 编程方式实现
将校验数据的代码放在Action类中.
在execute()中实现.(见Example1) 继承ActionSupport类并覆盖重写validate()方 法.(见Example2) validate*()方法 (见6.5.1)
Struts2 数据输入校验(1) —— 函数验证
Struts2 数据输入校验(1) ——函数验证Java框架 2009-02-20 13:10 阅读70 评论0字号:大中小用struts2标签库来实现上述目的的基本原理:错误消息分为field级和action级,都在ActionSupport类中预定义了,不同的是,fieldError是通过一个Map来实现,事实上记录了field的名字和错误信息,因此能在页面上对应的field中显示;而actionError是通过一个Collection实现,没有记录报错的来源,只记录了错误信息。
注意,下面是简要流程:(1)页面提交到action之后,首先struts会尝试对输入的字符串信息根据Action中定义的属性类型进行类型匹配及转换,如果输入为空,它会将内容置为该类型的缺省值(0、0.0、空字符串等等),对于数据格式不匹配的情况,比如说在age栏里面输入字母等等,struts会自动提示默认的错误,并返回input,这一工作是struts2自动完成的。
(2)然后,验证机制生效,调用validate()函数和XML验证框架中的验证逻辑(《S truts2 数据输入校验(2) ——XML验证》会提到),检查的同时会因为验证错误调用了a ddFieldError()和addActionError()。
页面提交之前,struts会调用ActionSupport(严格说是ValidationAware接口)的hasErrors()方法,该方法很简单,就是检查fieldError的Map和actionError的Collection是否为空,如果均为空,则调用execute()方法[*]进行业务逻辑的调度,否则返回error。
(3)最后,程序会根据返回信息执行forward操作,struts.xml中则定义了这些返回值所对应的跳转逻辑。
如果有错误返回,错误信息会在页面上提示在Action中所有addFieldError()设置的信息将在对应的field位置显示;在Action中所有addActionError()设置的信息将不会显示,除非在页面中定义了s: actionerror控件,那么错误将以ul的格式显示。
Struts2 数据输入校验(3) —— 问题补遗
Struts2中的13个校验规则:required、req uiredstring、int、double、date、e xpressio n、fielde xpressio n、email、url、visitor、co nversio n、stringleng th、rege x。
两种验证机制的执行顺序先执行validation.xml,后执行Action内部的validate()方法。
Actio nSupport类对ActionError和FieldError的实现细节在Actio nAware接口中声明的ActionError,ActionMessage: Collection<String>FieldError: Map<String,List<String>>Actio nSupport组合了一个实现了Validatio nAwa re的ValidationAwareSupport来继承Validatio nAwa re接口:Validatio nAwa reSupport类内部声明了三个私有变量,其中actionMessage = new ArrayList<String>();actionError = new ArrayList<String>();fieldErrors = new LinkedHashMap<String, List<String>>();FieldErro rs需要注意的一点我们往FieldErrors中添加错误的时候,需要调用addFieldError(),而不应该调用getFieldErrors().p ut()函数.这两个方法看起来是一样的,其实不然。
getFieldErrors()在实现的时候返回的是fieldErrors的一个可写副本,修改这个副本不会真正将错误传入fieldErro rs中去。
2、Struts2输入校验及动态方法调用
Struts2.11.动态方法调用一、提交是通过<form action="user!login.action">,表示提交到Action为user的Action的login方法去处理。
所以UserAction需要写public Stringlogin() throws Exception{…}方法.二、为Action指定method属性。
如:<form action="login.action"><action name="login" class="erAction"method="login">…</action>。
缺点:冗余三、使用通配符。
如:<action name="*Action" class="erAction"method="{1}"><result name="error">/error.jsp</result><result name="success">/success.jsp</result></action>或<action name="*_*" class="struts.action.{1}Action"method="{2}"><result name="{2}">/{2}.jsp</result><result name="error">/error.jsp</result><result name="success">/success.jsp</result></action>2.Struts2输入校验输入校验流程:1. 类型转换器负责对字符串的请求参数执行类型转换。
第4章 Struts 2的输入校验
清华大学出版社
regex(正则表达式校验器)
• <field-validator type="regex"> • <param name="expression"><![CDATA[^1[3578]\d{9}$]]></param> • <message>手机号格式不正确!</message> • </field-validator>
• • • • • • • • • •
无限挑战 无限飞翔
Struts 2框架应用教程
清华大学出版社
required(必填校验器)
• <field-validator type="required"> • <message>性别不能为空!</message> • </field-validator>
7.1.2
服务端校验
• 服务器端校验对于系统的安全性、完整性、健壮性起到了 至关重要的作用。Struts 2框架是非常强大的,它提供了 一套验证框架,通过验证框架能够非常简单和快速地完成 输入校验。 • 在服务器端,对于输入校验Struts 2提供了两种实现方法 :一是采用手工编写代码实现(手工编程),二是基于 XML配置方式实现(Struts 2校验框架)。
• • • • • 1.创建JSP页面practice724733.jsp,该页面与practice724.jsp页面完全一样,唯一不 同的就是表单的action属性值。该页面的action属性值practice724733.action 。 2.创建Action类Practice724733Action.java 3.在action包下编写校验文件Practice724733Action-validation.xml 4.配置Action 5.校验显示效果
Struts2用户校验
§2.1 Struts2用户校验(struts2校验框架)Struts2提供了功能强大的输入校验机制,通过Struts2内建的输入校验器,应用无需书写任何代码,即可完成大部分的校验功能,并可以同时完成客户端和服务器端的校验。
如果应用的输入校验规则特别,Struts2也允许通过重写validate方法来完成自定义校验,另外Struts2的开放性还允许开发者提供自定义的校验器。
表现层的数据处理包括两个方面:一是数据类型的转化,因为Web应用接收到的所有数据都是字符串类型的;另一个就是输入校验,因为开发者必须全面考虑用户输入的各种情况,尤其需要注意那些非正常输入。
客户端的校验最基础的方法就是在页面写javascript代码手工校验,服务器端的校验最基础的方法就是在处理请求的Servlet的service()方法中添加校验代码。
Struts2中可以通过重写validate方法来完成输入校验。
如果我们重写了validate方法,则该方法会应用于此Action中的所有提供服务的业务方法。
Struts2支持校验特定方法的validateXxx()方法。
例如某个Action中有一个regist()业务方法,我们可以写一个validateRegist()方法来进行regist()的特殊校验,客户端请求调用的次序如下:validateRegist()--------------->validate()-------------->regist()Struts2的输入校验流程如下:1,类型转换器负责对字符串的请求参数执行类型转换,并将这此值设置成Action的属性值。
2,在执行类型转换过程中可能出现异常,如果出现异常,将异常信息保存到ActionContext 中,conversionError拦截器负责将其封装到fieldError里,然后执行第3步;如果转换过程没有异常信息,则直接进入第3步。
Java Struts2 输入校验器大全
Struts2 输入校验器大全技术要点介绍Struts2 自带的输入校验器。
演示代码在xwork-2.0.4.jar 包中,请读者在\com\opensymphony\xwork2\validator\validators 路径下找一个名字为“ default.xml ”的xml 文件。
在该文件中有所有Struts2 自带的输入校验器定义。
具体代码如下:Java代码1. <!-------------文件名:default.xml-------->2. …………3. <validators>4. <validator name="required"5. class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>6. <validator name="requiredstring"7. class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>8. <validator name="int"9. class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>10. <validator name="double"11. class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>12. <validator name="date"13. class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>14. <validator name="expression"15. class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>16. <validator name="fieldexpression"17. class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>18. <validator name="email"19. class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>20. <validator name="url"21. class="com.opensymphony.xwork2.validator.validators.URLValidator"/>22. <validator name="visitor"23. class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>24. <validator name="conversion"25. class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>26. <validator name="stringlength"27. class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>28. <validator name="regex"29. class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>30. </validators>以上代码是所有Struts2 输入校验器的定义,下面将这些输入校验器(一共有13 个)的字段和非字段格式的校验形式写在如下,本例中没有程序代码示例,所有输入校验器的应用代码都是笔者自己定义的。
struts2学习笔记(五)在Action类中进行数据的输入校验
struts2学习笔记(五)在Action类中进行数据的输入校验不使用struts标签的话,在FORM元素中的ACTION属性的值后面必须手动添加" .action "用HTML标签来编写表单,在数据出错返回原来页面时想要显示框架自动添加的错误信息要用Struts标签:<s:fielderror></s:fielderror>要再次显示表单中一部分正确的信息,在HTML标签中可以value=”${requestScope.组件名}”使用struts标签会自动显示返回的错误信息,并保留显示部分正确信息.使用STRUTS标签来显示addFieldError中的错误信息于页面比较两个日期(DATE)先后:Calendar c1=Calendar.getInstance();c1.setTime(date1);//date1为一个Date对象Calendar c2=Calendar.getInstance();c2.setTime(date2);c1.before(c2);//比较两个日期的先后,返回一个boolean值value="${ername}"不能自动转化为INT类型的值被转化为0,并生成一条错误信息放入addFieldErrorstruts.xml中的constant元素用来存放常量先进行类型转换再进行输入校验Struts.xml文件中<package>元素前这样写:<constant name="struts.custom.i18n.resources" value="message"></constant>classes目录下的message.properties文件(文件名如上一行中绑定的value值一致),内容如下:全局xwork.default.invalid.fieldvalue={0} error任何属性在转换过程中出错,就会调用message.properties中的指定,{0}为用出错的属性名,并在后面加上ERROR 0是用来匹配哪个出错属性(如用页面中该组件的name值来代替)可以在action类下面:XAction.properties文件(文件名与ACTION类相同);写法:局部invalid.fieldvalue.age=age conversion errorage为在action类的转化过程中可能出错的属性名,=后面的字符串用来替换在出错后由框架自动添加进去的错误信息.要用中文来代替输入错误信息的话,需要对中文先进行编码,可以用到JDK/BIN目录下的native2ascii.exe程序,使用方法在DOS窗口中输入命令native2ascii回车后在新的一行输入你要转换的中文,回车后就行,将转换后的结果复制到properties文件中就可以在页面中显示中文提示信息了.也可以进行文件2文件的转换,命令如下:native2ascii test.txt result.properties 需要在要转换的文件目录下执行该命令全局要在struts.xml文件中用<constant>元素定义,并在classes目录下编写相应的properties文件,局部只需在相应的包内编写相应文件名的属性文件类型转换和输入校验的流程:1 先对STRUTS客户端传来的数据进行类型转换2 类型转换完成后再进行输入校验'3 如果类型转换和输入校验都没有错误发生,那么进入EXECUTE方法,(调用商业逻辑)注意:如果类型转换不成功也要进行输入校验(如INT类型转换出错自动赋值为O,STRING类型转换出错自动为NULL)。
struts2中所有方法进行输入校验
拦截器将异常封装到filedErrors里。不管类型转换是否出现异常,都会进入第3步。
3.系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。
4.再调用action中的validate()方法。
5.经过上面4步,如果系统中的filedErrors存在错误信息(即存放错误信息的集合的size大于0),
系统自动将请求转发至名称为input的视图。如果系统中的filedErrors 没有任何错误信息,系统将执行
action中的处理方法。
return username;
}
public void setUsername(String username){
ername = username;
}
public String getMobile(){
return mobile;
}
public void setMobile(String mobile){
对指定方法进行校验
validate.Xxx
public void validateUpdate(){ //重写,会对action 中的指定方法进行校验
==========================
输入校验的流程:
1.类型转换器对请求参数执行类型转换,并把转换后的值赋给action属性。
import com.opensymphony.xwork2.ActionSupport;
pubilc class PersonAction extends ActionSupport{
软件开发框架Struts2输入校验
课件演示
认真听讲
参与发言
示范操作
(1)使用字段校验的输入校验实例
(2)使用非字段校验的输入校验实例
(3)输入校验的国际化信息提示实例
讲解
示范
认真听讲
参与发言
任务实施
(1)使用字段校验的输入校验实例
(2)使用非字段校验的输入校验实例
(3)输入校验的国际化信息提示实例
动手实践
分组实践
小组讨论 动手实践
《软件开发框架(
单元5Struts2输入校验
授课教师:软件开发课程组
授课班级:单元总学时:6
教学条件
软件开发平台、投影设备、广播软件、互联网
教学素材
参考教材、课件、授课录像
教学目标
知识目标:
(1)了解输入校验的重要性;
(2)掌握validate。方法的使用;
(3)掌握validateXxx()方法的使用;
讲解归纳
课件演示
认真听讲
参与发言
示范操作
(1)必填校验器使用实例
(2)字符串长度使用实例
(3)日期校验器使用实例
(4)邮件地址校验器使用实例
讲解
示范
认真听讲
参与发言
任务实施
(1)必填校验器使用实例
(2)字符串长度使用实例
(3)日期校验器使用实例
(4)邮件地址校验器使用实例
动手实践
分组实践
小组讨论
动手实践
(4)掌握校验器的配置风格;
(5)熟练掌握Struts2常用内置校验器。
能力目标:
(1)能够重写validate()方法和validateXxx()方法,实 现手动输入校验;
(2)能够熟练使用字段校验器配置风格和非字段校验 器配置风格;
第4章 Struts 2输入校验
4.2.1 正则表达式
客户端校验一般都使用JavaScript来进行输入的 校验。JavaScript对输入判断都会使用到正则表 达式。正则表达式是字符串处理的利器,功能非 常强大。 正则表达式的功能非常强大,通过它可以进行字 符串匹配、字符串查找、字符串替换。今天重点 介绍字符串的匹配功能,字符串的匹配功能对于 输入校验提供了很大的帮助。先看下面简单的正 则表达式的示例。 正则表达式:a.b 匹配abb,acb,等 “.“是正则表达式的特殊字符,它的含义是匹配 所有的字符还有空格和Tab键。
4.4.3 校验动态方法
前面介绍的在一个Action中包含多个处理逻辑,不同处理逻辑对 应不同的方法。那如何定义输入校验来校验这些处理逻辑呢? 下面来看一个简单示例,首先将上一示例中的Action中添加一个 validate()方法,该方法将在控制台上简单的打印一句话,代码 如下所示。 public void validate() { System.out.println("validate method"); } 这里为了简单测试,并不输入任何的用户信息。直接单击“注册” 按钮,在控制台将打印如下语句: validate method execute method 从控制台打印的语句可以看出,在Action中首先执行了validate() 校验方法,然后再执行execute()处理逻辑方法。如果单击“删除” 按钮,在控制台将打印如下语句。 validate method delete method
4.2.2 JavaScript中使用正则表达式
下面以一个简单示例来介绍在JavaScript中使用 正则表达式进行字符串匹配。程序要求必须输入 数字,如果输入的不是数字就弹出提示,代码如 下所示。
Struts2 数据输入校验(2) —— XML验证
Struts2 数据输入校验(2) —— XML验证struts2提供了通过XML方式对输入数据进行验证的校验框架。
在与XXXAction同级的目录下,建立XXXAction-validation.xml,即为该Action的校验逻辑。
该校验XML的dtd格式文件为/xwork/xwork-validator-1.0.2.dtd,具体内容可以展开下面的代码:/xwork/xwork-validator-1.0.2.dtd可以看到,数据校验XML的根元素<validator>下面可以包含两种子元素:field和validator1、前者field 是针对字段进行的校验;2、后者validator 是非字段或者说全局范围的校验。
在介绍完校验是怎么回事后,后面会简单比较一下两种校验方式的区别。
一、字段校验:(field)先看个基本示例<validators><field name="username"><field-validator type="requiredstring"><message key="ername.required"/></field-validator></field><field name="password"><field-validator type="stringlength"><param name="trim">true</param><param name="minLength">4</param><param name="maxLength">10</param><message>password should be ${minLength} to ${maxLength} characters lon g.</message></field-validator></field></validators>有几个地方需要注意一下的。
软件开发框架(J2EE)Struts 2手动输入校验
输入校验的重要性
• 由于Web应用的开放性,输入校验直接影响了系统的稳 定性。因为不能保证每个用户都按照开发者的意图来输 入数据,而往往有些用户喜欢恶意输入非法数据来进行 测试和破坏。例如,会员注册系统中,如果用户输入的 出生日期在今日日期之后,则需要对用户输入的数据信 息进行校验并在页面中提示用户校验的结果信息。因此 ,良好的输入校验,是一个项目的必不可少的环节。
软件开发框架(J2EE)
validate()方法输入校验
• 在Struts 2框架中,validate()方法是专门用来校验数据的 方法。具体实现时,可以通过继承ActionSupport类,并 重写validate()方法来完成输入校验。
软件开发框架(J2EE)
validate()方法输入校验实例
软件开发框架(J2EE)
validate()方法输入校验实例
1.在MyEclipse开发工具中创建Web应用ch6,并配置Struts 2开发环境。
软件开发框架(J2EE)
validate()方法输入校验实例
2. 在 src 目 录 下 新 建 com.mxl.actions 包 , 并 在 其 中 创 建 LoginAction 类 , 在 该 类 中 重 写父 类 ActionSupport 中 的 validate()方法。
软件开发框架(J2EE)
validate()方法输入校验实例
5.运行程序,请求userlogin.jsp页面,输入用户名和密码, 校验数据的有效性。
软件开发框架(J2EE)
validateXxx()方法输入校验
• 在Struts 2框架中,Action可以包含多个逻辑处理方法, 也就是可以包含多个类似于execute()的方法,只是方法 名不同。如果在Action中重写了validate()方法后,则会在 每次调用逻辑处理方法前调用validate()方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、Struts2输入校验介绍Struts2的输入校验和类型转换都是对请求参数进行处理。
输入校验顾名思义就是请求参数是否能够满足一定的要求;客户端校验&服务器端校验客户端校验是指在浏览器这端通过Javascript进行初步校验,为了减轻服务器端的负载;服务器端校验是校验数据的最后一道防线;在Struts2中,数据校验不需要写任何代码,只需要一个配置文件,配置校验的条件就可以了,非常简单;因此数据校验文件是数据校验的最重要的内容;二、数据校验规则文件1.数据校验规则文件规则:1.此文件中规定了参数的一些校验条件;2.可以包括字段型校验器和非字段型校验器;3.命名规则:ActionName-validation.xml,其中ActionName是Action类的名字;4.每个Action都有一个validation文件,规则文件放在和Action同目录下;5.在前面我们讲到的配置逻辑action中,如果需要对某个逻辑Action配置数据校验文件,则命名规则为:ActionName-LogicActionName-validation.xml;6.注意:当需要对逻辑action进行校验时,如果存在一般形式的ActionName-validaton.xml 文件,则也会对此逻辑Action进行校验;7.输入校验失败后,和类型转换一样,会将错误封装成fieldError,并放入Action Context 中,因此在JSP中添加<s:fielderror/>可显示错误,此内容也是我们在数据校验文件中配置的;8.当输入校验失败后,和类型转换一样,返回逻辑视图为input,因此在struts.xml中必须配<result name="input"></input>9.输入校验失败后,struts表单标签也会自动输出错误提示;字段型校验器&非字段型校验器字段型校验器:以每个Action属性为一个单位进行编写,即以如下风格编写:1.<validators>2.<field name="">3.<field-validator type="">4.<param name=""></param>5.<message></message>6.</field-validator>7.</field>8.9.</validators>3.非字段型校验器是以校验器为单位的,内容模板:[html]view plaincopyprint?1.<validator type="">2.<param name="fieldName"></param>3.<param name=""></param>4.<message></message>5.</validator>代码示例:此段代码中分别对字符串、日期、整型、email进行数据校验;Validation01Action.java[java]view plaincopyprint?1.package org.validation.action;2.3.import java.util.Date;4.5.import com.opensymphony.xwork2.ActionSupport;6.7.public class Validation01Action extends ActionSupport {8. private String name;9. private String email;10. private int age;11. private Date date;12. public String execute()throws Exception{13. return SUCCESS;14. }15. public String getName() {16. return name;17. }18. public void setName(String name) {19. = name;20. }21. public String getEmail() {22. return email;23. }24. public void setEmail(String email) {25. this.email = email;26. }27. public int getAge() {28. return age;29. }30. public void setAge(int age) {31. this.age = age;32. }33. public Date getDate() {34. return date;35. }36. public void setDate(Date date) {37. this.date = date;38. }39.40.}1.jsp[html]view plaincopyprint?1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.<%@taglib prefix="s"uri="/struts-tags" %>3.4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">5.<html>6.<head>7.8.<title>My JSP '1.jsp' starting page</title>9.10.<meta http-equiv="pragma"content="no-cache">11.<meta http-equiv="cache-control"content="no-cache">12.<meta http-equiv="expires"content="0">13.<meta http-equiv="keywords"content="keyword1,keyword2,keyword3">14.<meta http-equiv="description"content="This is my page">15. <!--16. <link rel="stylesheet" type="text/css" href="styles.css">17. -->18.19.</head>20.21.<body>22.<s:fielderror></s:fielderror>23.<s:form action="validator01">24.<s:textfield name="name"label="姓名"></s:textfield>25.<s:textfield name="email"label="邮箱"></s:textfield>26.<s:textfield name="age"label="年龄"></s:textfield>27.<s:textfield name="date"label="日期"></s:textfield>28.<s:submit value="提交"></s:submit>29.</s:form>30.</body>31.</html>如果是以字段型校验器配置,则参考以下:Validation01Action-validation.xml(1)<field name="">为一个属性,name为Action属性名称;(2)<field-validator type="">为配置一个校验器,type为校验器的类型;(3)<param>为配置参数,比如最小值、最大值;(4)<message>为错误信息,如果需要对错误提示信息进行国际化,则可以在全局国际化资源文件中配置,在校验规则文件中编写如下形式:<message key="key"/>,key为国际化资源文件的key即可;[html]view plaincopyprint?1.<!DOCTYPE validators PUBLIC2. "-//Apache Struts//XWork Validator 1.0.2//EN"3. "/dtds/xwork-validator-1.0.2.dtd">4.5.<validators>6.<field name="name">7.<field-validator type="requiredstring">8.<param name="trim">true</param>9.<message>姓名不能为空</message>10.</field-validator>11.<field-validator type="regex">12.13.<param name="expression"><![CDATA[(\w{4,10})]]></param>14.<message>姓名要在4-10位之间</message>15.</field-validator>16.</field>17.<field name="age">18.<field-validator type="requiredstring">19.<param name="trim">true</param>20.<message>年龄不能为空</message>21.</field-validator>22.<field-validator type="int">23.<param name="min">0</param>24.<param name="max">200</param>25.<message>年龄范围在0-200之间</message>26.</field-validator>27.</field>28.<field name="email">29.<field-validator type="requiredstring">30.<param name="trim">true</param>31.<message>邮箱不能为空</message>32.</field-validator>33.<field-validator type="email">34.35.<message>邮箱格式不正确</message>36.</field-validator>37.</field>38.<field name="date">39.<field-validator type="requiredstring">40.<param name="trim">true</param>41.<message>日期不能为空</message>42.</field-validator>43.<field-validator type="date">44.<param name="min">2010-01-01</param>45.<param name="max">2010-12-31</param>46.<message>日期在2010-01-01到2010-12-31之间</message>47.</field-validator>48.</field>49.50.</validators>而如果采用非字段校验器,则(1)<validator type="">表示一个校验器,type属性表示校验器的类型;(2)<param name="fieldName"></param> 此元素是必要的,指定Action属性的名称;(3)<message>表示错误信息;[html]view plaincopyprint?1.<!DOCTYPE validators PUBLIC2. "-//Apache Struts//XWork Validator 1.0.2//EN"3. "/dtds/xwork-validator-1.0.2.dtd">4.5.<validators>6.<validator type="requiredstring"short-circuit="true">7.<param name="fieldName">name</param>8.<param name="trim">true</param>9.<message key="aa"></message>10.</validator>11.<validator type="requiredstring"short-circuit="true">12.<param name="fieldName">age</param>13.<param name="trim">true</param>14.<message>年龄不能为空</message>15.</validator>16.<validator type="requiredstring"short-circuit="true">17.<param name="fieldName">email</param>18.<param name="trim">true</param>19.<message>邮箱不能为空</message>20.</validator>21.<validator type="requiredstring"short-circuit="true">22.<param name="fieldName">date</param>23.<param name="trim">true</param>24.<message>日期不能为空</message>25.</validator>26.<validator type="regex">27.<param name="fieldName">name</param>28.<param name="expression"><![CDATA[(\w{4,10})]]></param>29.<message>姓名要在4-10位之间</message>30.</validator>31.<validator type="int">32.<param name="fieldName">age</param>33.<param name="min">0</param>34.<param name="max">200</param>35.<message>年龄范围在0-200之间</message>36.</validator>37.<validator type="email">38.<param name="fieldName">email</param>39.<message>邮箱格式不正确</message>40.</validator>41.<validator type="date">42.<param name="fieldName">date</param>43.<param name="min">2010-01-01</param>44.<param name="max">2010-12-31</param>45.<message>日期在2010-01-01到2010-12-31之间</message>46.</validator>47.</validators>以下我们开始介绍内建校验器,以下介绍根据字段型校验器介绍;非字段校验器只需要简单变换即可;1.required校验器此校验器要求字段必须为非空;2.requiredstring校验器此校验器要求检验字符串非空并且必须长度大于0,即不能是""可选参数为:(1)trim:如果为true,则将前后的空白去掉,类似于String的trim函数;3.int校验器此校验器要求整数限定在一定范围之内;可选参数为:(1)min:最小值;(2)max:最大值;4.date校验器要求日期在一定范围之内;可选参数:(1)min:最小日期;(2)max:最大日期;5.fieldexpression校验器要求此校验器满足指定的逻辑表达式;可选参数:(1)expression:逻辑表达式;格式为:<![CDATA[(逻辑表达式)]]>6.email校验器要求字段一定要满足电子邮箱格式;7.url校验器要求字段格式满足URL格式;8.stringlength校验器要求字段是string,并且长度在一定范围之内;可选参数:(1)trim:删除前后空白;(2)minLength:最小长度;(3)maxLength:最大长度;9.regex校验器要求满足给定的正则表达式;可选参数:(1)expression:给出正则表达式;格式如:<![CDATA[(正则表达式)]]>(2)caseSensitive:是否区分大小写;四、手动校验如果内建校验器不满足要求,可以自定义校验器,方法是在Action类中重写public void validate()方法;并且如果不满足条件,调用addFieldError("name","message"),然后返回input逻辑视图;当然如果一个Action类中有多个逻辑Action,则validate方法就不管用,因此需要定义validateXxx()方法;比如:如果逻辑Action的处理方法是fun(),则定义validateFun()方法,实现和validate方法一样;注意:如果逻辑Action的校验函数是validateXxx(),则validate()一样也会被调用,因为只要对此物理Action进行校验,则validate()方法总会起作用。