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

JSP
Java 创建cookie和删除cookie
jsp 从web.xml读取连接数据库的参数
jsp 不支持EL表达式,解决办法
jsp 获取客户端的浏览器和操作系统信息
struts2 session 解读
struts2 spring整合fieldError问题
jsp 生成验证码代码
搭建java WEB开发环境和应用
JSP 自定义标签
Java 区分文本中的中英文字符函数
通用JSP页面 jsp入门级文章
jsp struts1 标签实例详解
一个jdbc 测试程序代码
SSH整合中 hibernate托管给Spring得到SessionFactory
jsp SmartUpload 实现上传功能代码
jsp Unsupported encoding: gb2312 错误原因
java Struts2 在拦截器里的跳转问题
jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
Java 项目生成静态页面的代码
jdk与jre的区别 很形象,很清晰,通俗易懂

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


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