struts 1.2 ActionFrom表单验证

ActionForm的代码校验
   ActionForm的代码校验是最基本的校验方式。这种校验方式是重写ActionForm的validate方法,在该方法内对所有的字段进行基本的校验。如果出现不符合要求的输出,则将出错提示封装在ActionError对象里,最后将多个ActionError组合成ActionErrors对象,给对象里封装了全部的出错信息。
    以登陆页面为例,下面是重写了Validate方法的ActionForm的代码:


Java代码 
1.import javax.servlet.http.HttpServletRequest;  
2. 
3.import org.apache.struts.action.ActionError;  
4.import org.apache.struts.action.ActionErrors;  
5.import org.apache.struts.action.ActionForm;  
6.import org.apache.struts.action.ActionMapping;  
7. 
8.public class LoginActionForm extends ActionForm {  
9.      
10.    private static final long serialVersionUID = 1L;  
11.    private String username;  
12.    private String password;  
13.      
14.    public String getUsername() {  
15.        return username;  
16.    }  
17.    public void setUsername(String username) {  
18.        this.username = username;  
19.    }  
20.    public String getPassword() {  
21.        return password;  
22.    }  
23.    public void setPassword(String password) {  
24.        this.password = password;  
25.    }  
26.      
27.    //重写validate方法,完成数据校验  
28.    @SuppressWarnings("deprecation")  
29.    @Override   
30.    public ActionErrors validate(ActionMapping mapping,  
31.            HttpServletRequest request) {  
32.        //ActionErrors用于包装所有的出错信息  
33.        ActionErrors  errors = new ActionErrors();  
34.        //如果用户名为空  
35.        if((username == null)||(username.equals(""))) {  
36.            //error.username对应资源文件中的key,用户名是对应资源文件的第一个参数  
37.            errors.add("username", new ActionError("error.username","用户名"));  
38.        }  
39.        //如果密码为空  
40.        if((password == null )||(password.equals(""))) {  
41.            errors.add("password", new ActionError("error.password","密码"));  
42.        }  
43.        //返回封装了所有的出错信息  
44.        return errors;  
45.    }  
46.} 
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class LoginActionForm extends ActionForm {

private static final long serialVersionUID = 1L;
private String username;
private String password;

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;
}

//重写validate方法,完成数据校验
@SuppressWarnings("deprecation")
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
//ActionErrors用于包装所有的出错信息
ActionErrors  errors = new ActionErrors();
//如果用户名为空
if((username == null)||(username.equals(""))) {
//error.username对应资源文件中的key,用户名是对应资源文件的第一个参数
errors.add("username", new ActionError("error.username","用户名"));
}
//如果密码为空
if((password == null )||(password.equals(""))) {
errors.add("password", new ActionError("error.password","密码"));
}
//返回封装了所有的出错信息
return errors;
}
}

在JSP页面中值需要更改一处即可****之间的部分:

Jsp代码 
1.<%@ page language="java" contentType="text/html; charset=GB2312" errorPage="error.jsp"%>  
2.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
3.<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>    
4.<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>    
5.<html>  
6.  <head>  
7.    <!-- 使用国际化资源文件的key输出标题 -->  
8.    <title><bean:message key="login"/></title>  
9.  </head>  
10.  <!-- 下面的标签用于输出出错信息 -->  
11.  <!-- *******************************************-->  
12.  <html:errors/>  
13.  <!-- ******************************************* -->  
14.  <body>  
15.    <font color="red">  
16.    <%  
17.    //用于输出出错信息,出错信息保存在request的err属性中  
18.        if(request.getAttribute("err")!=null) {  
19.            out.println(request.getAttribute("err"));  
20.        }  
21.    %>  
22.    </font>  
23.    <br><br>  
24.    <!-- 下面是登陆表单 -->  
25.    请输入用户名和密码:<hr>  
26.        <html:form action="login.do" method="post">  
27.            <bean:message key="username" />:<html:text property="username" />  
28.            <br>  
29.            <bean:message key="password" />:<html:text property="password" />  
30.            <br>  
31.            <html:submit>  
32.                <bean:message key="login"/>  
33.            </html:submit>  
34.            <br>  
35.        </html:form>  
36.    </body>  
37.</html> 
<%@ page language="java" contentType="text/html; charset=GB2312" errorPage="error.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> 
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> 
<html>
  <head>
    <!-- 使用国际化资源文件的key输出标题 -->
    <title><bean:message key="login"/></title>
  </head>
  <!-- 下面的标签用于输出出错信息 -->
  <!-- *******************************************-->
  <html:errors/>
  <!-- ******************************************* -->
  <body>
<font color="red">
<%
//用于输出出错信息,出错信息保存在request的err属性中
if(request.getAttribute("err")!=null) {
out.println(request.getAttribute("err"));
}
%>
</font>
<br><br>
<!-- 下面是登陆表单 -->
请输入用户名和密码:<hr>
<html:form action="login.do" method="post">
<bean:message key="username" />:<html:text property="username" />
<br>
<bean:message key="password" />:<html:text property="password" />
<br>
<html:submit>
<bean:message key="login"/>
</html:submit>
<br>
</html:form>
</body>
</html>

由于在本项目中用到了资源文件,因为有了资源文件的支持,JSP页面只需要简单的<html:errors/>标签就可以生成全部的出错信息,下面是资源文件:

资源文件代码 
1.# -- standard errors --  
2.username=用户名  
3.password=密码  
4.login=登陆  
5.noname=请输入用户名,然后在登陆  
6.nopassword=请输入密码,然后在登陆  
7.#html:errors将自动加载errors.header作为出错提示标题  
8.errors.header=<h3><font color="red">验证出错</font></h3>你必须按以下提示修改你的输入才能继续....  
9.error.username={0} 必须填写.<br>  
10.error.password={0} 必须填写.<br>  
11.#html:errors将自动加载errors.footer作为出错的最后一行  
12.errors.footer=<h3><font color="green">你完成上面提示部分</font></h3> 
# -- standard errors --
username=用户名
password=密码
login=登陆
noname=请输入用户名,然后在登陆
nopassword=请输入密码,然后在登陆
#html:errors将自动加载errors.header作为出错提示标题
errors.header=<h3><font color="red">验证出错</font></h3>你必须按以下提示修改你的输入才能继续....
error.username={0} 必须填写.<br>
error.password={0} 必须填写.<br>
#html:errors将自动加载errors.footer作为出错的最后一行
errors.footer=<h3><font color="green">你完成上面提示部分</font></h3>



注:在action跳转的地方添加input和是否验证的标签
<action path="/login"
type="org.springframework.web.struts.DelegatingActionProxy"
name="loginForm"
scope="request"
validate="true" input="/login.jsp"
>

你可能感兴趣的:(表单验证,struts 1.2,actionFrom)