Struts2的验证框架

最近在研究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的验证功能。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值