`

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

分享到:
评论

相关推荐

    struts1.2actionfrom验证

    struts验证,Actionfrom的表单验证

    java笔试题最新最好,最全面

    - **ActionFrom**:ActionForm对象主要用于封装用户提交的数据,它实际上就是一个JavaBean,可以存储用户表单中的各个字段值。 - **验证机制**:ActionServlet会根据`struts-config.xml`中的配置信息来决定是否需要...

    ActionForm属性中存在对象数组如何处理

    在Struts框架中,ActionForm类是用于封装请求参数并传递到Action类进行业务逻辑处理的关键组件。...通过这种方式,Struts框架能够处理ActionForm中包含对象数组的场景,允许用户在一次表单提交中处理多个对象实例。

    Action,Service和Dao功能

    例如,在 Struts 框架中,Action 类主要负责处理用户的请求,例如接收请求参数,验证参数,并将其传递给 Service 层。 Service 层 Service 层是处理业务逻辑的层次,它主要负责处理业务逻辑,例如处理跨多个业务...

    J2EE架构设计PPT

    - UI层通过Struts实现,负责用户交互,使用MVC模式,ActionFrom用于封装用户输入,Action处理用户请求,ValidatorPlugIn则进行UI验证。 2. **多层结构优点**: - 层次分明,降低各层之间的耦合度,提高代码重用和...

    J2EE架构设计-成湘均

    在UI层,主要介绍了Struts框架,它是基于MVC模式,用于处理用户交互,通过ActionFrom和Action来封装用户请求并做出响应,同时使用ValidatorPlugIn进行前端验证。 接下来,课程重点讲解了Spring框架。Spring作为一个...

    J2EE讲义.ppt

    在示例中,Struts框架被用来实现UI层,通过ActionFrom和Action来处理用户请求和响应,并提供ValidatorPlugIn进行前端验证。 业务层负责处理具体的业务逻辑,以降低与其他系统的耦合。Spring框架在这里扮演了重要...

    J2EE架构设计.pptx

    ActionFrom用于封装用户输入数据,Action处理用户请求并触发相应动作,ValidatorPlugIn则用于客户端验证,确保输入数据的有效性。 业务层是系统的核心,它包含了具体的业务逻辑。通过Spring框架,我们可以实现依赖...

Global site tag (gtag.js) - Google Analytics