006-Struts2验证一

用户在客户端浏览器表单填写数据,比如在注册时,要求用户名长度不能小于5且不大于12,注册密码长度不能小于6且不能大于10。这时就需要用到数据验证,当然这里所讨论的都是服务器端对数据的验证,而客户端验证(可以采用JavaScript验证)在这里不做过多介绍。

下面首先举一个手动编码验证的例子来进行说明。

1、新建一个注册页面register.jsp:

<%@ taglib uri="/struts-tags" prefix="s" %>
<body>
    <s:actionerror cssStyle="color:red"/>
    <form action="doregister.action">
        username:<input type="text" name="username" size="20"><br>
        password:<input type="password" name="password" size="20"><br>
        <input type="submit" value="register">  
        <input type="reset" value="reset">
    </form>
</body>
这里用到了标签库,<s:actionerror cssClass="color:red"/>这一句是显示出action级别的错误信息,在Struts2框架里,验证错误级别有两个,一个是action级别的错误,一个是field字段或者说属性级别的错误。属性级别的错误在Struts2在调用setField方法如果出现类型转换错误,则会自动生成field级别的错误;而我们这里用到的是action级别的错误。

2、编写对应的action类,DoRegister类继承ActionSupport类,重写了之前已经用过的execute方法,这里又重写了一个新的方法validate方法,validate方法同样也是Struts2框架会自行调用,并且它会先于execute方法之前调用。在validate方法内编写了验证逻辑。如果在执行execute方法之前,任何步骤出问题,就会返回一个“input”值,不会在返回“success”值。在validate方法里添加action级别的错误信息。

package com.xbb.action;

import com.opensymphony.xwork2.ActionSupport;

public class DoRegister extends ActionSupport {

	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public void validate() {
		if (null != username || username.length() < 5 || username.length() > 12) {
			this.addActionError("the length of username should be >=5 and <=12 ");
		}
		if (null != password || password.length() < 6 || password.length() > 15) {
			this.addActionError("the length of password should be >=6 and <=15");
		}
	}
	
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}

3、配置struts.xml文件,添加action:

<action name="doregister" class="com.xbb.action.DoRegister">
             <result name="success">/successRegister.jsp</result>
             <result name="input">/register.jsp</result>
</action>

其中两个<result>分别代表验证成功和失败,input则重新转回register.jsp。

4、现在编写成功注册页面,successRegister.jsp:

<body>
    username:<%=request.getParameter("username") %><br>
    password:<%=request.getParameter("password") %><br>
</body>


浏览器地址栏输入:http://localhost:8080/Struts/register.jsp ,写入错误信息:

提交后出现:

说明编写的验证逻辑正常运行了,现在输入正常数据,提交后转到successRegister.jsp:


ok。大笑






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值