struts2用户验证的validate方法

问题?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>

继承了ActionSupport的动作类AddUserAction

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位的数字");
		}
	}
	
	
}

用户添加信息页面addUser.jsp(这里的add跟配置文件中的input是通过通配符走的add方法想对应的):

<%@ 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>

验证:运行服务器,访问添加信息页面和修改信息页面,看看是否可以进行验证和数据回显。

           struts2用户验证的validate方法_第1张图片

struts2用户验证的validate方法_第2张图片


                     struts2用户验证的validate方法_第3张图片



你可能感兴趣的:(框架,数据,web用户输入数据的验证)