快速业务通道

Struts从零开始五、Struts中验证数据实例 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Struts从零开始五、Struts中验证数据实例

时间:2011-08-05

一、Struts的ActionForm的表单验证

ActionForm类用于在视图层和控制层之间传递HTML表单数据。控制层可以从ActionForm Bean中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm Bean中,然后把数据返回给视图。即ActionForm Bean从HTML表单中获取用户输入的数据并将传递给Action类,也可以把从业务层返回的数据用来填充ActionForm Bean,然后JSP页面用它来为HTML表单提供各种输出字段的数据。此外,ActionForm Bean还具有表单验证功能,可以过路不合法的数据。

ActionForm Bean有两种存在范围:request和session。如果ActionForm Bean存在于request范围,它仅在当前的请求/响应生命周期中有效。如果ActionForm Bean存在于session范围,同一个ActionForm Bean实例在整个HTTP会话中都有效。

在Struts框架中,使用ActionForm Bean来实现应用程序系统的非持久性数据存储和维护功能,它采用了自动填充属性和调用的机制。所以必须继承ActionForm类,并且包涵用户表单输入的属性,以及相应的get方法和set方法。另外,还可以根据需要重写父类的reset()和validate()方法,实现属性的重置和表单数据验证功能。

validate()方法

这个方法主要负责检查数据的格式和语法,而不负责检查数据是否符合业务逻辑。

ActionForm基类中的validate()方法在默认情况下将返回null。如果创建了ActionForm的子类,那么应该在子类覆盖validate()方法。

reset()方法

这个方法用于恢复ActionForm Bean 的属性的默认值。例如:把字符串属性设为null或某个初始值。

1、修改前面我们写的LoginActionForm,如果你不清楚的话,请您先看前几个实例,具体代码如下:

public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) { ActionErrors errors = new ActionErrors(); if (username == null|| username.equals("")) { errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionError("loginform.error.username")); } if (userpass == null||userpass.equals("")) { errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionError("loginform.error.password")); } return errors; }

这个方法返回ActionErrors对象,如果返回的ActionErrors对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,此时就回把请求转发到你struts.xml里面元素input属性指定的web资源。

new ActionError("loginform.error.username");取得资源文件里面的键值,用于页面的输出。

Struts从零开始五、Struts中验证数据实例(2)

时间:2011-08-05

2、打开applicationResource.properties,加入如下信息:

loginform.error.username=please enter your username

loginform.error.password=please enter your password

因为我们前面做了国际化,所以打开applicationResource_zh_CN.properties文件,添加如下:

loginform.error.username=请输入用户名

loginform.error.password=请输入密码

3、修改struts-config.xml文件

path="/login" name="loginActionForm" scope="request" type="actions.LoginAction" validate="true" input="/login.jsp">

在元素中,name和scope属性分别指定ActionForm的名字和它的范围,valudate属性指定是否执行表单验证,而input属性表示验证失败,所要显示用户的内容。

4、修改login.jsp,在元素添加,目的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号