Struts2中提供了一套服务器端验证的框架,通过验证框架可以实现对数据数据的验证。
struts2是webwork演变而来的,其验证框架正是webwork的那一套东西。
这是最简单的方式,直接在action中实现validate()方法即可,在此方法中编写验证代码。
private String userName;
private String account;
private String pwd;
private int age;
//请求处理方法
public String register(){
System.out.println(this.toString());
return Action.SUCCESS;
}
@Override
public void validate() {
System.out.println("validate is do......");
if(userName.length()<=0)
this.addFieldError("userName", "用户名不能为空!!!");
if(age<6 || age>10)
this.addFieldError("age","年龄超出范围!!");
}
配置文件:
<package name="user" extends="struts-default" namespace="/">
<action name="reg" class="cn.wzk.action.UserAction" method="register">
<result name="input">register.jspresult>
<result>index.jspresult>
action>
package>
注意使用验证框架时action中result的name值需要提供input
Jsp页面
<%@ taglib prefix="s" uri="/struts-tags" %>
-------------------------------------------
<s:fielderror />
<form action="reg.action" method="post">
<table>
<tr>
<th>姓名:th>
<td>
<input type="text" name="userName"/>
td>
tr>
<tr>
<th>账号:th>
<td>
<input type="text" name="account"/>
td>
tr>
<tr>
<th>密码:th>
<td>
<input type="text" name="pwd"/>
td>
tr>
<tr>
<th>年龄:th>
<td>
<input type="text" name="age"/>
td>
tr>
<tr>
<td colspan="2">
<input type="submit" value="提交" />
td>
tr>
table>
form>
注意事项:
使用struts2标签时,web.xml配置文件中应将
“*.action”改为“/*”
struts2中允许对不同的请求方法定义独立的验证方法。
定义一个方法,方法名采用validate + 请求方法名()的形式进行验证方法的定义。定义过程中,请求方法名的首字母要大写。
public void validateRegister(){
System.out.println("validateRegister is do......");
if(userName.length()<=0)
this.addFieldError("userName", "用户名不能为空!!!");
if(age<6 || age>10)
this.addFieldError("age","年龄超出范围!!");
}
validateRegister—–>validate—–>action
其实struts2已经内置了一些基本的数据验证,完全可以省去我们日常的一些数据验证需求,通过配置文件的方式。
在ActionClass所在的目录下,新建一个以ActionClass名字组合成的特定xml:ActionClass-validations.xml(例,我的ActionClass名为userAction,则我应该在同目录下建一名为userAction-validation.xml的文件)
添加Action类并继承ActionSupport
在Action所在的包下创建一个名为ActionName-validation.xml的文件
复制文档的声明到配置文件中(帮助文件下找)
添加validators根元素及验证器(validators—->字段—->validator—->参数及消息)
Jsp页面中添加struts2的标签
UserAction-validation.xml
<validators>
<field name="userName">
<field-validator type="requiredstring">
<param name="trim">trueparam>
<message>用户名为必填信息message>
field-validator>
<field-validator type="stringlength">
<param name="trim">trueparam>
<param name="minLength">6pa1ram>
<param name="maxLength">10param>
<message>姓名的长度为${minLength}~${maxLength}字符message>
field-validator>
field>
<field name="age">
<field-validator type="int">
<param name="min">0param>
<param name="max">200param>
<message>年龄的取值范围为${min}~${max}message>
field-validator>
<field-validator type="requiredstring">
<param name="trim">trueparam>
<message>年龄为必填信息message>
field-validator>
field>
validators>
struts2的验证框架是一种服务器端的验证。一般较少使用(一般网站中只采用客户端验证即可。但是一些安全性要全较高的项目都会采用客户端+服务器端验证的方式进行验证)。