中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > JSP > 综合文章
页面流(Page flow)表单验证
作者:未知 时间:2005-08-10 20:57 出处:Java频道 责编:chinaitpower
              摘要:页面流(Page flow)表单验证
创建Web应用的过程中,验证用户在HTML表单中的输入是最常见的一个问题。用户输入数据必须被验证从而保证进行业务处理之前数据是正确的。输入的表单数据可能用于创建或更新数据库条目、调用Web服务、或作为业务过程的输入。基于目前由Struts提供的表单验证框架,页面流提供了一种简单易用的服务端验证方式。

页面流验证提供以下功能:
· 用户表单输入的服务端验证
· 用待验证的表单bean封装验证逻辑
· 验证失败时自动导航到输入页面
· 内置消息包支持,方便进行国际化
本文假定读者熟悉页面流及JSP。本文将介绍创建表单bean和验证页面的基本步骤。如果发生验证错误用户将会得到通知,从而可以修正它们;动作方法被调用时可以认为数据是正确的。


Request生命周期及验证

表单验证针对的是已提交表单bean中的内容。通过JSP页面的<netui:form> 标签的动作属性,该bean被间接选中;表单bean与指定动作相关联。表单bean继承自com.bea.wlw.netui.pageflow.FormData。为了验证表单bean,开发人员需要重载validate() 方法并提供验证逻辑。
图1演示了request的生命周期以及验证是如何发生的。当Strut的控制器接收到请求时,它将请求传递给页面流RequestProcessor。请求处理器的processPopulate 方法首先构造一个新的表单bean,其中含有来自请求的所有数据条目。此步骤将会创建FormData。然后请求处理器检查是否为动作激活了表单验证。如果验证被激活,将会针对该表单bean调用validate()方法。如果出现验证错误,控制权将交给一个输入页面,同时转交的还有用户输入的数据以及错误信息。如果没有发现错误,控制权将被传递给目标动作从而继续处理请求。
图1中的蓝色方框代表页面流代码,黑色方框代表用户代码。


图1——请求验证生命周期


通过简单的五个步骤就可以在页面流中进行验证。下面详细解释每个步骤。

步骤1——验证方法

验证用户输入的第一个步骤是在表单bean上创建validate()方法。该方法将会检查表单bean的属性,察看有没有用户输入错误。下面这个非常简单的表单bean定义了两个属性:name 和type。validate() 方法提供了对这些属性的验证。

 

  public static class NameBean extends FormData
  {
      private String name;
 
      private String type;
 
      public void setType(String type)
      {
          this.type = type;
      }
 
      public String getType()
      {
          return this.type;
      }
 
      public void setName(String name)
      {
          this.name = name;
      }
 
      public String getName()
      {
          return this.name;
      }
 
      public ActionErrors validate(ActionMapping mapping,
                      HttpServletRequest request)
      {
          ActionErrorserrors = new ActionErrors();
          if (name == null || name.equals("")) {
              errors.add("nameError",
              new ActionError("NullNameError"));
          }
          else {
              if (!Character.isUpperCase(name.charAt(0))) {
                  errors.add("nameError",
                    new ActionError("UpperCaseNameError",name));
              }
          }
          if (type == null || (!type.equals("bar") &&
                               !type.equals("foo"))) {
              errors.add("typeError",
              new ActionError("TypeError",type));
          }
          if (!errors.empty()) {
              request.setAttribute("errorNotSet",new Boolean(false));
          }
          return errors;
      }
  }
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有