All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
利用XMLHTTP无刷新获取数据_[XML教程]
十天学会ASP.net,第八天_.net资料_编程技术
C#教程:线程的创建
Visual,C#,2005快速入门之运用作用域_[Asp.Net教程]
ASP.NET,2.0无刷新页面新境界_[Asp.Net教程]
C#中ErrorProvider组件应用实例
实例研究PHP函数isset和empty的区别_php资料_编程技术
什么是垂直搜索?_php资料_编程技术
开发技术展望,Asp.net3.0,蓝图_[Asp.Net教程]
轻松了解-SQL Server 2008-的报表服务_[SQL Server教程]
Reading number is top 10 pictures
西游日记4
猫眯也疯狂
Chinese paper-cut grilles art appreciation7
人造器官和铁肺人
Flow chart of breast implants
Ashlynn Brooke photograph of a group1
So beauty, will let you spray blood4
Female model behind the bitterness, often being overcharged1
邪恶搞笑内涵图
Is said to be a Chinese female artist fame explicit pictures before2
Download software ranking
The Bermuda triangle1
Unix video tutorial5
Detective task-the top secret prostitution files
XML+Web+Service开发教程
尖东毒玫瑰B
C#与.NET技术平台实战演练
Tram sex maniac 2 (H) rar bag5
Tram sex maniac 2 (H) rar bag12
传奇私服架设教程
Boxer's Top ten classic battle6
归海一刀 published in(发表于) 2014/3/16 2:54:06 Edit(编辑)
基于AJAX技术实现Struts校验框架_[AJAX教程]

基于AJAX技术实现Struts校验框架_[AJAX教程]

基于AJAX技术实现Struts校验框架_[AJAX教程]

提要 实时的数据校验是AJAX技术的重要优点之一,Struts校验框架通过加入这种技术进一步丰富了其MVC,从而使得Web应用程序的开发效果更接近于桌面应用程序。

  一、 引言

  校验框架的根本目的是实现域校验。在Web应用程序中有许多方法可以实现域校验,总体上可以分为两类:服务器端和客户端。其中,Struts校验框架是适合于基于Java的Web应用程序环境最好的框架之一。它可以使用服务器端校验来配置应用程序并且使用在校验过程(在请求处理期间激活)中生成的错误消息;而且它也可以通过在请求页面上生成的JavaScript来实现客户端校验。

  AJAX是一种能异步地调用服务器并返回XML文档的技术,近来十分流行。它的重要优点之一是能够实现数据的实时校验。

  本文将主要探讨如何使用AJAX技术进一步增强现有Struts校验框架的功能。为此,我们必须开发几个组件来实现选择校验框架并且为客户端生成指定格式的消息,还要开发一个处理错误消息生成的标签库。

  二、 前提

  你需要使用Windows操作系统,并安装Eclipse集成开发环境和Tomcat应用程序服务器,还要确保在你的操作系统上已经注册了MSXML 3.0 ActiveX对象。另外,你还需要Struts库(http://struts.apache.org)和JDOM库(www.jdom.org,用于XML开发),请分别参考下面的图1和图2。



图1.AjaxForm类层次图



图2.ErrormessageHandler类层次图

  三、 服务器端

  StrustsActionServlet

  首先,我们必须用这个类扩展org.apache.struts.action.ActionServlet类以创建一个servletMapping变量,并用此变量来存储有关浏览器地址的action路径的信息。当添加代码时,我们必须把web.xml配置为一个用于应用程序服务器的Web应用程序描述器。

  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代码看上去具有如下形式:


public class StrutsActionServlet extends the ActionServlet.
{
public String getServletMapping() {
return this.servletMapping;
}
}

  AjaxValidationRequestProcessor

  为了支持现有的Struts框架,我们必须扩展Struts包中的RequestProcessor类。为此,我们必须定制请求处理器,其一是因为我们必须区分怎样实现校验-使用现有的Struts框架还是使用基于AJAX的方案;其二是因为我们将在服务器和客户端之间在有关如何拦截消息方面签订一种协约。在消息生成过程中,我们使用的是XML格式-这是一种很好的媒体消息发送格式。我们所使用的XML格式的定义如下:

  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校验框架。在请求期间另外要实现,其一是处理收集的由客户端发送到action表单的信息的填充问题;其二是通过使用已经存在于父类AjaxValidationRequestProcessor(TilesRequestProcessor)中的现有Struts校验框架中的方法来处理校验问题。

  TilesRequestProcessor中的校验过程将调用所有基于Struts校验框架的校验并且把action错误保存到请求中。我们需要把action错误分析成片断并生成将被发送到客户端的XML消息校验。既然我们想改变校验方式,那么在校验过程中,我们应该检查我们使用的是哪一种校验框架(见图3)。



图3.控制器处理流程

  在此,我们把JDOM作为处理引擎并使用它生成XML消息。如图4所示,当开始校验并且所用校验框架是AJAX校验框架时,接下来要进行填充错误消息并且构建XML消息校验。



图4.过滤和XML校验生成过程

  ErrorMessageHandler

  这个类具有XML消息构建器的功能,它基于identity和description属性来构建XML消息。在调用buildXMLMessage后,调用者就会准备文档并设置XML消息的根元素。这个类还有一个addNextXMLMessage函数,这个函数负责把其它校验消息添加进XML(见源代码中的列表1)。
AjaxValidationRequestProcessor类中的process方法负责把响应的content type设置为"text/xml"并且以字符串形式发送XML消息。该方法的代码如列表2(见所附源码)所示。

  AjaxValidationRequestProcessor类中的processValidation方法负责填充action错误并且基于XML格式约定为客户端构建消息。此函数的代码如下所示:


...
ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);
Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);
generateXMLMessage(errors, identity, locale, sbXMLMessage);
...
  四、 客户端

  构建Taglib组件

  · AjaxJavaScriptLibraryTag:该taglib组件负责生成客户端基本的XMLHTTP控制器函数的JavaScript函数部分。

  · AjaxErrorHtmlRenderTag:该taglib组件负责在JSP页面上生成显示错误消息的区域。

  配置Taglib定义

  在开发完taglib组件后,我们需要使用如列表3(见所附源码)的方式来配置taglib的tld文件。

  五、 构建JSP和Struts配置

  为了模仿校验处理的结果,我们首先需要构建描述层-这可以通过加入我们已经构建的taglib来实现。在本文实例中,我将尽力使用Struts提供的校验规则组件和表单本身的校验功能来给出一个校验的实例。现在,我们在JSP页面中准备5个文本框。第一到第四个文本框使用校验规则配置,第5个文本框使用来自action表单的校验过程。此外,我们还需要一个提交按钮来实现提交表单后对此的模仿。注意,至此,现有的Struts校验仍然没有使用AJAX。用户接口如图5所示。



图5.JSP校验页面

  六、 构建Action和Action表单

  对于Struts action,我们只需把它转发到我们已经构建的JSP即可,相应的action代码具有如下类似形式:


public ActionForward execute(...) {
return mapping.findForward("success");
}

  如果输入为空,那么Action表单代码就对requiredText属性进行校验。记住,要从AjaxForm类中派生此表单类。此Action表单的validate方法看上去如下:


public ActionErrors validate(...) {
ActionErrors errors = new ActionErrors();
if (StringUtils.isEmpty(this.requiredText)) {
errors.add("requiredText", new ActionError("error.required.input"));
}
request.setAttribute(Globals.ERROR_KEY, errors);
}

  七、 应用Struts校验规则

  接下来要配置Struts校验规则,例如最小长度,最大长度,电子邮件和模式文本,等等。然后,把这些数据应用于客户端的输入对象。这一部分相应的配置类见列表4(详见所附源码)。

  八、 校验处理流程

  首先,客户端初始化XMLHTTP组件以实现对服务器的请求。然后,一旦开始构建用户激活的事件,URL的参数就被发送给服务器。在结束构建参数后,客户端将依附oneadystatechange XMLHTTP事件来听取(listen)来自服务器端的响应。在接收响应后,客户端开始分析XML校验消息并且把该消息存放到适当的地方(见图6)。



图6.客户端处理流程

  当服务器接收请求时,它就开始检查AJAX校验的参数并且进行校验。一旦完成校验,生成的对象就被过滤到与用户输入对象相联系的特定的错误中。在过滤操作完成后,即刻生成XML消息并把该消息发送回客户端(见图7)。



图7.服务器端处理流程

  九、 总结

  在本文中,我们构建了一个控制器,它能够接收来自客户端的异步请求并且加入Struts校验过程来生成action错误对象。在生成错误对象和XML消息(见图8和图9)之后,对于即将被校验的特定输入对象的过滤操作立即执行。



图8.在Struts校验框架内使用AJAX实现应用程序校验测试



图9.Struts校验框架用例
作者:朱先忠编译 来源:天极开发





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.