用户在客户端浏览器表单填写数据,比如在注册时,要求用户名长度不能小于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。
本文详细介绍了如何使用Struts2框架实现客户端和服务器端的数据验证,包括手动编码验证、创建相应的action类、配置struts.xml文件及编写验证逻辑等关键步骤。通过实例演示了验证用户输入的用户名和密码是否符合指定长度限制的过程。

被折叠的 条评论
为什么被折叠?



