当前位置: 首页 > 图文教程 > 网络编程 > JSP > 页面流(Page flow)表单验证

JSP
JavaBeans 程序开发从入门到精通教程
企业级应用中的Applet和Servlet的通信(一)
企业级应用中的Applet和Servlet的通信(三)
企业级应用中的Applet和Servlet的通信 (二)
Web开发中防止浏览器的刷新键引起系统操作重复提交
谈一下关于XHTML网页的制作
40种网页常用小技巧(javascript)←↓------[不时之需]
使用xmlhttp和Java session监听改善站内消息系统
JSP简明教程:行为标签与实例(转
jsp与javascript的结合在页面间传递参数
最基本的一个转换密码字符串为乱码以及解码的程序
55种网页常用小技巧(javascript)
jsp中标签的部署与调用
用jsp动态输出excel文档和中文乱码问题的解决
J2SDK和TOMCAT的安装及配置
web开发中的多条件查询处理技巧1则
JSP连接Mysql数据库攻略
Tomcat的Servlet配制
JSP/Servlet 中的汉字编码问题
Taglib原理和实现 第五章:再论支持El表达式和jstl标签

JSP 中的 页面流(Page flow)表单验证


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 112 ::
收藏到网摘: n/a

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