注册本站  论坛  繁體中文

慧民电脑芯片级维修-电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 开源技术 >> Struts >> Java正文

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

文章来源:中国IT实验室整理 作者:佚名 更新时间:2008-10-6 12:42:02 【 】 【加入收藏

  一、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");取得资源文件里面的键值,用于页面的输出。

  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,在元素添加,目的是显示错误信息,具体代码片段如下:

  :用于输出消息。属性介绍如下:

  n name:指定ActionMessages对象存放在request或session范围内的属性key。标签处理类将根据这一属性key来检索request或session范围的ActionMessages对象。

  n message属性:指定消息的来源。如果为true,则从request或session范围内检索出属性key为Globals.MESSAGE_KEY的ActionMessages对象,此时name属性无效;如果为false,则根据name属性来检索ActionMessage对象,如果此时没有设置name属性,将采取默认值Globals.ERROR_KEY.message属性的默认值为false。

  n id属性:用来命名从消息中检索出来的每个ActionMessage对象,它和标签的name属性匹配。

  :表示显示javaBean或其属性的内容。

  5、 运行

  打开IE,键入如下地址:http://localhost:8080/Struts1_Login/login.jsp

  不输入任何东西,我们直接点几击“确定”,如下:

  

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     利用Ruby简化你的Java测试(进阶篇)
     IIS+tomcat整合,并且通过域名访问网站
     Eclipse客户端程序中多线程的使用
     实现向eclipse控制台输入消息
     浅谈Acegi配置-Spring-Java
     反思Spring:由Ruby on Rails想到的
     利用spring2.5和Reflection简化测试中的moc…
     struts2.0表单提交带参数问题
     JSF与Struts的比较 超易懂!
     Struts从零开始六、Struts的模块使用实例
    最 新 推 荐
     struts2.0表单提交带参数问题
     JSF与Struts的比较 超易懂!
     Struts从零开始六、Struts的模块使用实例
     Struts从零开始五、Struts中验证数据实例
     Struts从零开始四、Struts中的国际化
     Struts从零开始三、连接数据库实例
     Struts从零开始二、解决中文乱码的问题实例
     Struts从零开始一、普通的登录验证实例
     Struts2_Spring 整合
     Struts2的类型转换
    相 关 文 章

    利用Ruby简化你的Java测试(进阶篇)
    反思Spring:由Ruby on Rails想到的
    struts2.0表单提交带参数问题
    JSF与Struts的比较 超易懂!
    Struts从零开始六、Struts的模块使用实例
    Struts从零开始四、Struts中的国际化
    Struts从零开始三、连接数据库实例
    Struts从零开始二、解决中文乱码的问题实例
    Struts从零开始一、普通的登录验证实例
    为Web服务构建Struts应用程序

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    门市地址:广东省佛山市南海区黄岐黄海路133号
    本网站所有内容未经许可不得转载或做其他使用