Struts2的验证框架

来源:互联网 发布:中轴线北京徒步知乎 编辑:程序博客网 时间:2024/05/07 04:02

最近在研究Struts2的验证框架,写写它的实现步骤,对大家进一步了解Struts2的验证有一定的帮助。

为什么要验证框架
  1. 用户无需编码,在外部配置文件中指定某个字段的验证类型,并提供出错信息即可
  2. 使用验证框架可以减轻开发者负担,提高开发效率

下面通过一个实例来说明:

先看需求:完成一个注册页面的验证,需求如下:

  1. 用户名:不能为空,长度在6和10之间
  2. 密码:不能为空,密码长度>=6
  3. 确认密码:必须和密码相同
  4. 电话:不能为空,符合电话号码格式
  5. 用户姓名:不能为空,长度在2和4之间
第一步:创建RegisterAction
public class RegisterAction extends ActionSupport {private User user; // 用户信息private String repassword; // 确认密码private UserBiz userBiz = new UserBizImpl();public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String getRepassword() {return repassword;}public void setRepassword(String repassword) {this.repassword = repassword;}// 验证方法public void validateExecute() {if (!userBiz.validate(user.getName().trim())) {addFieldError("user.name", "用户名存在");}}// 注册方法public String execute() {if (!userBiz.register(user)) {this.addFieldError("user.name", "注册失败");return INPUT;}return SUCCESS;}}
第二步:在struts.xml中配置action
通过“input”指定验证错误时需返回的页面
<!-- 用户注册 --><action name="register" class="cn.jbit.houserent.action.RegisterAction"><result name="input">/page/register.jsp</result><result>/page/success.jsp</result></action>

第三步:创建注册页面register.jsp
注意:当使用s标签的时候,出错信息会自动显示在相应的验证表单项后
<s:form action="register"><s:textfield name="user.name" label="用户名" /><s:password name="user.password" label="密码" /><s:password name="repassword" label="确认密码" /><s:textfield name="user.telephone" label="电话" /><s:textfield name="user.username" label="用户姓名" /><s:submit value="立即注册"></s:submit></s:form>

第四步:创建验证文件
要和验证的Action放在同一个包下
命名ClassName-validation.xml或ClassName-alias-validation.xml,其中ClassName表示Action类名,而alias表示在struts.xml中配置Action的名字。后者用于Action中有多个业务方法时
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><field name="user.name"><field-validator type="requiredstring"><param name="trim">true</param><message>用户名不能为空</message></field-validator></field><field name="user.password"><field-validator type="requiredstring"><param name="trim">true</param><message>密码不能为空</message></field-validator><field-validator type="stringlength"><param name="minLength">6</param><param name="maxLength">10</param><message>密码长度须在${minLength}和${maxLength}之间</message></field-validator></field><field name="repassword"><field-validator type="fieldexpression"><param name="expression">user.password==repassword</param><message>密码和确认密码必须相同</message></field-validator></field><field name="user.telephone"><field-validator type="requiredstring"><message>电话号码不能为空</message></field-validator><field-validator type="regex"><param name="expression">^(\d{3,4}-)+(\d{7,8})$</param><message>电话号码格式不正确</message></field-validator></field></validators>

第五步:使用验证框架编写验证规则
验证文档里的<field-validator type="">中的type类型要和User中的属性类型一致,否则会报类型转换错误
field-validator的type的取值:
int 整数;
double 实数;
date 日期;
expression  两数的关系比较;
email Email地址;
url web地址;
regex 正则表达式验证;
conversion 转换;
required 是否为空;
requiredstring 必须字符;
stringlength 输入字符长度限制;

 

通过以上的步骤之后,就可以实现Struts2的验证功能。

 

原创粉丝点击