struts2 校验框架

通过继承ActionSupport重写validate()方法,实现数据校验,会存在大量的重复代码,
类似于struts1,Struts2也提供通过配置文件来进行数据校验,使用校验框架不必重复的编写校验代码.

Action及jsp可以不用改变

Java代码


package com;



import java.util.Date;



import com.opensymphony.xwork2.ActionSupport;



public class RegistAction extends ActionSupport {



private String userName;



private String password;



private Integer age;



private Date birthday;



public Integer getAge() {

return age;

}



public void setAge(Integer age) {

this.age = age;

}



public Date getBirthday() {

return birthday;

}



public void setBirthday(Date birthday) {

this.birthday = birthday;

}



public String getPassword() {

return password;

}



public void setPassword(String password) {

this.password = password;

}



public String getUserName() {

return userName;

}



public void setUserName(String userName) {

this.userName = userName;

}



@Override

public String execute() throws Exception {

return SUCCESS;

}

}

package com;


import java.util.Date;


import com.opensymphony.xwork2.ActionSupport;


public class RegistAction extends ActionSupport {


private String userName;



private String password;



private Integer age;



private Date birthday;


public Integer getAge() {

return age;

}


public void setAge(Integer age) {

this.age = age;

}


public Date getBirthday() {

return birthday;

}


public void setBirthday(Date birthday) {

this.birthday = birthday;

}


public String getPassword() {

return password;

}


public void setPassword(String password) {

this.password = password;

}


public String getUserName() {

return userName;

}


public void setUserName(String userName) {

this.userName = userName;

}


@Override

public String execute() throws Exception {

return SUCCESS;

}

}



Struts.xml

Xml代码

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">



<struts>

<constant name="struts.custom.i18n.resources" value="messageResource"></constant>



<package name="user" extends="struts-default">

<action name="regist" class="com.RegistAction">

<result name="success">/welcome.jsp</result>

<result name="input">/regist.jsp</result>

</action>

</package>

</struts>

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>

<constant name="struts.custom.i18n.resources" value="messageResource"></constant>



<package name="user" extends="struts-default">

<action name="regist" class="com.RegistAction">

<result name="success">/welcome.jsp</result>

<result name="input">/regist.jsp</result>

</action>

</package>

</struts>



jsp

Html代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@taglib prefix="s" uri ="/struts-tags"%>

<html>

<body>

<form action="regist.action" method="post">

<s:fielderror></s:fielderror>

<table>

<tr>

<td>userName:</td>

<td>

<input type="text" name="userName">

</td>

</tr>

<tr>

<td>password:</td>

<td>

<input type="text" name="password">

</td>

</tr>



<tr>

<td>age:</td>

<td>

<input type="text" name="age">

</td>

</tr>

<tr>

<td>birthday:</td>

<td>

<input type="text" name="birthday">

</td>

</tr>

<tr>

<td colspan="2">

<s:submit value="注册"></s:submit>

</td>

</tr>

</form>

</body>

</html>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@taglib prefix="s" uri ="/struts-tags"%>

<html>

<body>

<form action="regist.action" method="post">

<s:fielderror></s:fielderror>

<table>

<tr>

<td>userName:</td>

<td>

<input type="text" name="userName">

</td>

</tr>

<tr>

<td>password:</td>

<td>

<input type="text" name="password">

</td>

</tr>



<tr>

<td>age:</td>

<td>

<input type="text" name="age">

</td>

</tr>

<tr>

<td>birthday:</td>

<td>

<input type="text" name="birthday">

</td>

</tr>

<tr>

<td colspan="2">

<s:submit value="注册"></s:submit>

</td>

</tr>

</form>

</body>

</html>


添加验证文件
在RegistAction.java同目录下添加文件名为RegistAction-validation.xml(action名-validation.xml)

Xml代码
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

<field name="userName">

<!-- 验证字符串不能为空 -->

<field-validator type="requiredstring">

<!-- 去空格 -->

<param name="trim">true</param>

<!-- 错误提示信息 -->

<message>userName is required</message>

</field-validator>



<!-- 验证字符串长度 -->

<field-validator type="stringlength">

<param name="minLength">5</param>

<param name="maxLength">16</param>

<message>userName should be between ${minLength} and ${maxLength}</message>

</field-validator>

</field>



<field name="password">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>password is required</message>

</field-validator>



<field-validator type="stringlength">

<param name="minLength">5</param>

<param name="maxLength">16</param>

<message>password should be between ${minLength} and ${maxLength}</message>

</field-validator>

</field>



<!-- 验证字符串为数字 -->

<field name="age">

<field-validator type="int">

<param name="min">1</param>

<param name="max">150</param>

<message>age should be between ${min} and ${max}</message>

</field-validator>

</field>



<!-- 验证字符串为日期类型 -->

<field name="birthday">

<field-validator type="date">

<param name="min">1888-01-01</param>

<param name="max">2008-01-01</param>

<message>birthday should be between ${min} and ${max}</message>

</field-validator>

</field>

</validators>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

<field name="userName">

<!-- 验证字符串不能为空 -->

<field-validator type="requiredstring">

<!-- 去空格 -->

<param name="trim">true</param>

<!-- 错误提示信息 -->

<message>userName is required</message>

</field-validator>



<!-- 验证字符串长度 -->

<field-validator type="stringlength">

<param name="minLength">5</param>

<param name="maxLength">16</param>

<message>userName should be between ${minLength} and ${maxLength}</message>

</field-validator>

</field>



<field name="password">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>password is required</message>

</field-validator>



<field-validator type="stringlength">

<param name="minLength">5</param>

<param name="maxLength">16</param>

<message>password should be between ${minLength} and ${maxLength}</message>

</field-validator>

</field>



<!-- 验证字符串为数字 -->

<field name="age">

<field-validator type="int">

<param name="min">1</param>

<param name="max">150</param>

<message>age should be between ${min} and ${max}</message>

</field-validator>

</field>



<!-- 验证字符串为日期类型 -->

<field name="birthday">

<field-validator type="date">

<param name="min">1888-01-01</param>

<param name="max">2008-01-01</param>

<message>birthday should be between ${min} and ${max}</message>

</field-validator>

</field>

</validators>

Struts 2.0已经实现很多常用的校验了,在jar的default.xml中的注册的

Xml代码
<validators>

<validator name ="required" class ="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator" />

<validator name ="requiredstring" class ="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" />

<validator name ="int" class ="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator" />

<validator name ="double" class ="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator" />

<validator name ="date" class ="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator" />

<validator name ="expression" class ="com.opensymphony.xwork2.validator.validators.ExpressionValidator" />

<validator name ="fieldexpression" class ="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator" />

<validator name ="email" class ="com.opensymphony.xwork2.validator.validators.EmailValidator" />

<validator name ="url" class ="com.opensymphony.xwork2.validator.validators.URLValidator" />

<validator name ="visitor" class ="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator" />

<validator name ="conversion" class ="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator" />

<validator name ="stringlength" class ="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator" />

<validator name ="regex" class ="com.opensymphony.xwork2.validator.validators.RegexFieldValidator" />

</validators>

<validators>

<validator name ="required" class ="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator" />

<validator name ="requiredstring" class ="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" />

<validator name ="int" class ="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator" />

<validator name ="double" class ="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator" />

<validator name ="date" class ="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator" />

<validator name ="expression" class ="com.opensymphony.xwork2.validator.validators.ExpressionValidator" />

<validator name ="fieldexpression" class ="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator" />

<validator name ="email" class ="com.opensymphony.xwork2.validator.validators.EmailValidator" />

<validator name ="url" class ="com.opensymphony.xwork2.validator.validators.URLValidator" />

<validator name ="visitor" class ="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator" />

<validator name ="conversion" class ="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator" />

<validator name ="stringlength" class ="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator" />

<validator name ="regex" class ="com.opensymphony.xwork2.validator.validators.RegexFieldValidator" />

</validators>

<message>提示信息也可以国际化,<message key=””>就可以显示资源文件里的key对应的value了


当一个Action中有多个业务方法时,每个业务方法都会使用这种验证,显然是不好的.例如Action中有方法public String regist(),我们可以为regist()专门定义一个配置文件,文件名称为RegistAction-regist-validation.xml(Action名称-方法名- validation.xml)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值