您现在的位置:中国下载站学院中心网络编程JAVA教程JAVA开发技巧 → 文章列表

使用AJAX的Struts验证框架 --实时数据验证是AJAX技术的一大优势

作者:佚名  来源:不详  发布时间:2007-4-13 19:01:50   

减小字体 增大字体

 
 

  实时数据验证是AJAX技术的一大优势之一。通过应用此技术,struts验证框架将增强struts MVC,并使Web应用程序更接近于桌面应用程序

  此验证框架用于验证字段。有许多在Web应用程序上进行验证的方法。这些方法可分为两类:服务器端方法和客户端方法。Struts验证框架是面向基于Java的Web应用环境的最佳框架之一。它能够配置应用程序,方法是使用服务器端验证和错误消息,此错误消息在处理请求时呈现在调用的验证流程上,它还能够进行客户端验证,方法是使用请求页面上呈现的JavaScript。

  AJAX是一种JavaScript技术,它能够异步呼叫服务器并获取XML文档,这类文档最近非常流行。其用途之一就是实时数据验证。

  本文关注使用AJAX增强现有struts验证框架。必须开发几个组件(例如控制器),以选择验证框架,并呈现特定格式的消息(用于客户端)和标签库(处理错误消息呈现)。

必要条件

  需要一个具有Eclipse和Tomcat应用服务器Windows系统。请确定已在操作系统中注册了MSXML 3.0 ActiveX对象。还需要Struts库(http://struts.apache.org)和JDOM库(www.jdom.org),以用于XML开发(参见图1和图2)。

  

  

服务器端场景StrustsActionServlet

  我们必须扩展来自org.apache.struts.action.ActionServlet的类,以获得servletMapping变量,此变量存储关于如何针对动作类将该扩展格式化为浏览器地址形式的动作路径的信息。当添加代码时,我们必须将web.xml配置为应用服务器的Web应用程序描述符。

[责任编辑:cndownzcom]

  web.xml配置如下:

  ...
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>net.sf.struts.servlet.StrutsActionServlet</servlet-class>
...
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
...
StrutsActionServlet Java代码如下:
public class StrutsActionServlet extends the ActionServlet.
{
public String getServletMapping() {
return this.servletMapping;
}
}
AjaxValidationRequestProcessor

  要在第一步中支持现有Struts框架,我们必须扩展来自Struts软件包的RequestProcessor。我们必须定制化此请求处理器,因为我们必须判别将如何进行验证(通过使用现有Struts框架,还是利用AJAX概念),还因为我们将在服务器和客户端之间制订一个有关如何解释消息的契约。在消息呈现方面,我们将使用XML格式,这是一种很好的媒体消息传递格式。我们将应用的XML格式的定义是:

  XML Format

  XML Format
<?xml version="1.0" encoding="UTF-8"?>
<message>
<identity name=messageAreaId>
   <description>
  MessageValue
</description>
</identity>
</message>
描述Identity是客户端JavaScript用于了解消息将被置于何处的ID。 Description是在服务器端呈现错误消息后的结果。

  首先我们需要在继续流程映射之前,从Web描述符获得servlet映射配置。调用此流程后,应用程序将准备表单实例,此实例继承自AjaxForm类。这一处理管理AJAX验证,并且应进行检查以确定来自客户端的请求没有使用struts验证框架。其他在请求过程中执行的流程是流程填充(用于收集客户端发送到动作表单的信息)和流程验证(通过使用现有Struts验证框架中已经存在于AjaxValidationRequestProcessor的父类TilesRequestProcessor中的方法)。

  来自TilesRequestProcessor的验证流程将调用所有基于struts验证框架的验证,并将动作错误存储到请求。我们需要仔细分析动作错误,并生成XML消息验证,此验证将被发送到客户端。因为我们希望更改支持验证的行为方式,所以验证流程应检查所用的验证框架的指示器(参见图3)。

[责任编辑:cndownzcom]

  

  使用JDOM作为处理引擎,生成XML消息。如图4所示,如果流程验证被调用,且验证框架的条件等同于AJAX验证框架,则流程将继续填充错误消息并构建XML消息验证。

  

ErrorMessageHandler

  该类处理XML消息生成器的功能。此Java类将构建基于identity和description属性的XML消息。调用方调用了buildXMLMessage之后,它将准备文档并设置XML消息的根元素。此类还具有一个addNextXMLMessage函数,以将更多验证消息添加到XML(参见清单1)。

  清单1

  ...
public void buildXMLMessage() throws ParserConfigurationException {
// initiate document builder to prepare the media of XML Message
this.rootElement = new Element(CONSTANT_MESSAGE);
addNextXMLMessage();
}
...
public void addNextXMLMessage() throws ParserConfigurationException {
// creating the xml message based on format above
Element identityElement = new Element(CONSTANT_IDENTITY);
identityElement.setAttribute(CONSTANT_NAME, this.identity);
Element descriptionElement = new Element(CONSTANT_DESCRIPTION);
descriptionElement.addContent(this.description);
identityElement.addContent(descriptionElement);
    rootElement.addContent(identityElement);
  }

  此流程方法将响应的内容类型设置为“text/xml”,并将XML消息作为字符串发送。AjaxValidationRequestProcessor代码上的流程函数如清单2所示。

[责任编辑:cndownzcom]

  清单2

  public void process(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException
  {
    if ( request.getParameter(CONSTANT_VALIDATION_FRAMEWORK_ARG) != null )
    {
...
this.processValidate(req, resp, form, mapping);
response.setContentType(CONSTANT_XML_CONTENT_TYPE);
       response.getWriter().write(sbXMLMessage.toString());
       response.flushBuffer();
      }
    } else
    {
      super.process(req, resp);
    }
  }
processValidation方法将填充

  动作错误,并基于面向客户端的XML格式契约构建消息。AjaxValidationRequestProcessor代码上的processValidation函数如下所示:

  ...
ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);
Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);
generateXMLMessage(errors, identity, locale, sbXMLMessage);
...
客户端场景构建标签库组件AjaxJavaScriptLibraryTag:此标签库组件在客户端呈现JavaScript功能,以实现基本XMLHTTP控制器功能。 AjaxErrorHtmlRenderTag:此标签库组件在JSP页面呈现错误消息区域。 配置标签库定义

  开发出标签库组件之后,我们需要配置清单3中显示的标签库tld文件。

  清单3

  <taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>ajaxLib</shortname>
<tag>
<name>library</name>
<tagclass>net.sf.ajax.taglib.AjaxJavaScriptLibrary
</tagclass>
<bodycontent>JSP</bodycontent>
</tag>
<tag>
<name>error</name>
<tagclass>net.sf.ajax.taglib.AjaxErrorHtmlRender
</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>property</name>
  <required>true</required>
  <rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>event</name>
  <required>true</required>
  <rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
构建JSP和Struts配置

  要模拟验证处理的结果,我们首先需要构建呈现层,方法是合并我们已经构建的标签库。在此例中,我试图给出一个示例验证(通过使用来自Struts的验证规则组件)以及来自表单本身的验证。准备五个JSP页面下的文本框。第一个到第四个文本框使用验证规则配置,第五个文


在百度中搜索更多使用AJAX的Struts验证框架 --实时数据验证是AJAX技术的一大优势相关网页 转贴于:中国下载站

  • 上一篇文章:使用 Ajax 操纵 Lotus Notes 文档
  • 下一篇文章:实现AJAX风格的Portal
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!