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

JSP
在Jsp Servlet中页面重新定向总汇
JSP 点击链接后下载文件(相当于右键另存)功能
Java 通过设置Referer反盗链
JSP XMLHttpRequest动态无刷新及其中文乱码处理
java session出现的错误
JSP 自定义标签之一 简单实例
JSP Servelet 数据源连接池的配置
jsp web.xml文件的作用及基本配置
java tapestry5 布局 参数的处理
JSP 传递中文参数的例子
通过Setters方式对日期属性及日期格式进行IOC注入
J2EE基础--为什么jsp不能取代servlet?
解析JSP中标签库
JSP三种页面跳转方式的比较
提升JSP应用程序的几个技巧
JSP进行数据库连接的实例
JSP实例程序:统计当前在线人数
EJB初学者怎样面对经常有的十一个疑惑
高手为你解读J2EE开发过程中的异常处理
JSP环境配置:TOMCAT的内存和连接数配置详解

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 136 ::
收藏到网摘: 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;
      }
  }