我们知道当我们继承了struts-default,我们的Action就能使用defaultStack。那么我们就可以在validate方法里面添加一些验证信息。
一个登录程序验证:用户名必须是"Zhao"并且密码不为空才能登录成功;
LoginAction类:
package com.zcl.struts.validate;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String userName ;
private String password ;
public LoginAction(){}
public String execute(){
return SUCCESS ;
}
public void validate(){
if(this.getUserName().length()==0){
addFieldError("userName", "User Name is required") ;
} else if(!this.getUserName().equals("Zhao")){
addFieldError("userName", "Invalid User") ;
}
if(this.getPassword().length()==0){
addFieldError("password","Password is required") ;
}
}
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;
}
}
登录界面,login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<s:head/>
<title>validator</title>
</head>
<body>
<table>
<form action="Login">
<s:textfield name="userName" label="User Name" /><br/>
<s:password name="password" label="Password" />
<s:submit value="Login" />
</form>
</table>
</body>
</html>
其中<s:head/>Struts2的一种样式。
登录成功界面success.jsp就打印一个“Success”即可。
配置struts.xml
<struts>
<package name="login" extends="struts-default">
<action name="Login" class="com.zcl.struts.validate.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
我们到login.jsp界面如果什么都不写即提交显示如下:
如果填写了密码和用户名,但是用户名不对:
、
如果都正确即可登录成功。