问题?struts2用户验证的validate方法
变成人员有时候会遇到注册页面或者登录页面的信息验证。当然我们可以使用jquery框架或者js来做。这里讲的是struts2用户验证的validate方法。
原理:struts2环境及相关的包xwork2包
一、用户输入数据的验证
1、手工编程验证,针对该动作类中的所有的动作方法
步骤:
a、动作类继承ActionSupport
b、覆盖调用public void validate()方法
c、在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldName,String errorMessage)
如果fieldError(存放错误信息的Map)有任何的元素,就是验证不通过,动作方法不会执行。
Struts2框架会返回到name=input的result
d、在name=input指定的页面上使用struts2的标签显示错误信息。<s:fielderror/>
二、案例
1.struts.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表示常量设置,设置配置文件自动更新,开发中很重要 --> <constant name="struts.action.extension" value="action,,do"></constant> <constant name="struts.devMode" value="true"></constant> <!-- 数据验证 validate --> <package name="validate" namespace="/validate" extends="struts-default"> <action name="user_*" class="com.itcast.web.addUser.AddUserAction" method="{1}"> <result name="success">/uploadSuccess.jsp</result> <result name="input">/{1}User.jsp</result> </action> </package> </struts>
package com.itcast.web.addUser; import java.io.Serializable; import com.opensymphony.xwork2.ActionSupport; public class AddUserAction extends ActionSupport implements Serializable { private String username;//用户名不能为空,还要去掉首尾空格 private String password;//3~6位的数字 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; } // 动作方法的实现add public String add(){ System.out.println("执行了user的add方法"); return SUCCESS; } public String update(){ System.out.println("执行了user的update方法"); return SUCCESS; } /* (non-Javadoc) * @see com.opensymphony.xwork2.ActionSupport#validate() * 这个ActionSupport覆盖的方法 */ @Override public void validate() {//数据验证方法,首先验证,*再确认走那些方法(手工验证所有的方法,必须走这个) if(username==null||"".equals(username.trim())){ addFieldError("username", "用户名不能为空"); } //正则表达式,jdk查pattern if(password==null||!password.matches("\\d{3,6}")){ addFieldError("password", "密码不能为空且必须是3~6位的数字"); } } }
<%@ taglib uri="/struts-tags" prefix="s" %><!--导入s标签库--> <body> <!-- 验证信息数据回显 --> <s:fielderror fieldName="username"></s:fielderror> <s:fielderror fieldName="password"></s:fielderror> <form action="${pageContext.request.contextPath}/validate/user_add.action" method="post"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="text" name="password"/><br/> <input type="submit" value="保存"/> </form> </body>用户修改信息页面updateUser.jsp
<%@ taglib uri="/struts-tags" prefix="s" %> <body> <!-- 修改信息数据回显 --> <s:fielderror fieldName="username"></s:fielderror> <s:fielderror fieldName="password"></s:fielderror> <form action="${pageContext.request.contextPath}/validate/user_update.action" method="post"> 用户名:<input type="text" name="username" value="sds"/><br/> 密码:<input type="text" name="password" value="sdff"/><br/> <input type="submit" value="保存"/> </form> </body>
验证:运行服务器,访问添加信息页面和修改信息页面,看看是否可以进行验证和数据回显。