转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
基于AJAX技术实现Struts校验框架         ★★★★

基于AJAX技术实现Struts校验框架

作者:闵涛 文章来源:闵涛的学习笔记 点击数:697 更新时间:2009/4/22 23:33:09
  天极视界AJAX Web开发的新宠儿

  提要 实时的数据校验是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);
...


[Web开发]AJAX来判断dedecms用户是否登录  [网页制作]新手解读:认识XML,AJAX,SNS,Tag
[网页制作]从GMail认识的W3C网页标准和Ajax  [Web开发]利用PHP+JavaScript打造AJAX搜索窗
[Web开发]基于AJAX技术提高搜索引擎排名  [Web开发]XMLHTTP异步获取返回值的代码超时测试(AJAX)
[Web开发]整理Web开发-Ajax社区中有关Ajax的资料  [Web开发]【编程】Web 交互 - AJAX 不是什么新技术
[Web开发]掌握 Ajax,第 1 部分: Ajax 简介  [Web开发]Backbase框架:专业级AJAX开发框架
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台