Struts.xml
<action name="login" class="com.cug.demo04.LoginAction">
<result>/demo04/success.jsp</result>
<result name="input">/demo04/login.jsp</result>
</action>
<action name="login1" class="com.cug.demo04.LoginAction" method="login">
<result>/demo04/success.jsp</result>
<result name="input">/demo04/login.jsp</result>
</action>
login.jsp
<body>
<s:fielderror></s:fielderror>
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登陆"/>
</form>
<hr/>
<form action="${pageContext.request.contextPath}/login1" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登陆"/>
</form>
</body>
package com.cug.demo04;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
@Override
public void validate() {
System.out.println("validate~");
if(username==null || username.trim().isEmpty()){
this.addFieldError("username", "用户名不能为空");
}
if(password==null || password.trim().isEmpty()){
this.addFieldError("password", "密码不能为空");
}else{
if(password.length()<5 || password.length()>8){
this.addFieldError("password", "密码的长度应该在5~8之间");
}
}
}
public String login(){
return SUCCESS;
}
public void validateLogin(){
System.out.println("validateLogin~");
}
}
1、手动编码校验
在Action类中 编写校验方法
validate() 覆盖ActionSupport ------ 对Action 中所有执行方法 进行校验
* 通过<action> 配置 method属性,执行Action中特定的方法
validateXxx() Xxx就是指定方法名 -------- 对Action中指定方法 进行校验
校验方法执行过程
1)、 params 拦截器 设置请求参数
2)、 conversionError 拦截器 处理类型转换错误
3)、 validation 拦截进行参数有效性校验
优先xml配置文件 、然后 validateXxx 具体方法校验 ,再然后 validate 所有方法执行校验
4)、 workflow 拦截器 判断如果有错误信息 返回 input 如果没有错误信息 执行Action 对应业务处理方法