struts2基本验证

              ActionSupport类,他是提供了一个Action接口和其他几个有用接口的默认实现的便利类,提供了 数据验证,错误消息本地化等功能。

     我们先来看看简单的数据验证。

     我们实现一个登陆时,验证用户提交的用户名和密码是否为空这个功能。

    先写action,LoginAction,他继承自ActionSupport。

    

package com.action;



import com.opensymphony.xwork2.ActionSupport;
import com.po.User;

public class LoginAction  extends ActionSupport{

	private User user;
	public String execute() throws Exception {
         return "success";
	}
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

	public void validate() {
		if(user.getName().trim().equals("")
			||user.getPassword().trim().equals(""))
		{
			this.addActionError("用户名或者密码为空");
		}
	}
    
	
	
}

     我们重写ActionSupport的validate方法,当有错误时,我们可以追加错误,利用函数

addActionError(“错误信息)。validate方法没有返回值,那么框架怎么得知我们的验证是否成功呢?

    它的内部实现是基于workflow拦截器,workflow拦截器检查是否生成了错误信息,如果找到错误信息,workflow拦截器把工作流找到我们result中定义的name="input"的页面。没有错误的话,就继续执行工作流。

    <result name="input">/index.jsp</result>   name="input"定义当验证出错时候跳转的页面,验证出错跳转到index页面。

   input的定义如下:

   

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

	<package name="default"  extends="struts-default">	    
		<action name="Login" class="com.action.LoginAction" >
		    <result name="success">/weclome.jsp</result> 
			<result name="failed">/index.jsp</result>
			<!-- 验证出错后跳转的页面 -->
			<result name="input">/index.jsp</result>
		</action>
	</package>
	
</struts>

   我们的jsp页面:

   我们可以利用 <s:actionerror/>输出错误信息。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix= "s" uri = "/struts-tags" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
  
     <!-- 输出错误信息 -->
     <s:actionerror/>
     <s:form method="post" action="Login.action">
        <s:textfield name="user.name" label="用户名"></s:textfield>
        <s:password name="user.password" label="密码"/>
        <s:submit value = "登 录" align="center"/>
     </s:form>
  </body>
</html>

你可能感兴趣的:(struts2基本验证)