电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程
基于AJAX技术实现Struts校验框架
作者:未知 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
一、引言

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

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

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

中.国站长站

二、前提 站.长站

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

中.国.站.长.站


中.国站长站

图1.AjaxForm类层次图 Www@Chinaz@com

Chinaz

图2.ErrormessageHandler类层次图 Chinaz_com

三、服务器端 Www_Chinaz_com

StrustsActionServlet Chinaz^com

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

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

以下为引用的内容:
public class StrutsActionServlet extends the ActionServlet.
{
public String getServletMapping() {
return this.servletMapping;
}
}
  AjaxValidationRequestProcessor
Www@Chinaz@com

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

Www~Chinaz~com

以下为引用的内容:

  XML Format

Chinaz^com


<?xml version="1.0" encoding="UTF-8"?>
<message>
<identity name=messageAreaId>
<description>
MessageValue
</description>
</identity>
</message>

中国.站长站




Chinaz.com


描述

Www@Chinaz@com

·Identity是客户端JavaScript的ID,用于指明消息应该放置的位置。 Www~Chinaz~com

·Description是服务器端生成错误消息以后的结果。 中国.站长站

首先,在处理映射前,我们需要从Web描述符中得到servlet映射配置信息。激活该过程后,应用程序就着手准备继承自AjaxForm类的表单实例。接下来的处理将管理AJAX校验并且应该进行检查以确保来自客户端的请求没有使用Struts校验框架。在请求期间另外要实现,其一是处理收集的由客户端发送到action表单的信息的填充问题;其二是通过使用已经存在于父类AjaxValidationRequestProcessor(TilesRequestProcessor)中的现有Struts校验框架中的方法来处理校验问题。

Www.Chinaz.com

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



Chinaz

图3.控制器处理流程 Chinaz~com

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

Chinaz~com

中国站.长.站

图4.过滤和XML校验生成过程 中国.站长站

ErrorMessageHandler

[中国站长站]


这个类具有XML消息构建器的功能,它基于identity和description属性来构建XML消息。在调用buildXMLMessage后,调用者就会准备文档并设置XML消息的根元素。这个类还有一个addNextXMLMessage函数,这个函数负责把其它校验消息添加进XML(见源代码中的列表1)。

[中国站长站]

AjaxValidationRequestProcessor类中的process方法负责把响应的content type设置为"text/xml"并且以字符串形式发送XML消息。该方法的代码如列表2(见所附源码)所示。 中.国.站.长.站

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

以下为引用的内容:
...
ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);
Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);
generateXMLMessage(errors, identity, locale, sbXMLMessage);
...


中.国.站长站

四、客户端 Www~Chinaz~com

构建Taglib组件

中国站.长站

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

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

[中国站长站]

配置Taglib定义 Chinaz@com

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

五、构建JSP和Struts配置 Www.Chinaz.com

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

Www_Chinaz_com



中.国.站长站


图5.JSP校验页面 中.国.站.长.站

六、构建Action和Action表单

Chinaz^com


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

以下为引用的内容:
public ActionForward execute(...) {
return mapping.findForward("success");
}  
Chinaz~com

如果输入为空,那么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);
}  
Www@Chinaz@com

七、应用Struts校验规则 中.国.站.长.站

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

Chinaz

八、校验处理流程

Chinaz_com


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

中国站.长站

图6.客户端处理流程

Www_Chinaz_com

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

Www_Chinaz_com


Chinaz

图7.服务器端处理流程

站.长站


九、总结

中国站.长站

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

Www@Chinaz@com

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

Chinaz




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·ASP教程:第五篇 脚本变量、函数、过程和条件语句
·ASP教程:第十八篇 堵住ASP漏洞
· ASP教程:第十七篇 ADO 存取数据库时如何分页显示
·ASP教程:第十六篇 其它的ASP常用组件
· ASP教程:。
·ASP教程:第十四篇 ActiveX 组件
· ASP教程:第十三篇 数据库查询语言(2)
·ASP教程:第十二篇 数据库查询语言(1)
· ASP教程:第十一篇 ASP内建对象Server
·ASP教程:第十篇 Global.asa文件的使用及Chat程序

最新文章
·FreeBSD上面的Proftpd安装与配置
·用Sendmail在Linux下架设邮件服务器
·Linux操作系统中如何安装MySQL数据库
·WinXP+Mac OS X+Linux的多操作系统安装
·Linux和Windows共存的模式下分区要小心
·Linux系统下的C语言开发都需要学些什么
·Linux操作系统中安装JAVA JDK1.6的方法
·Linux操作系统程序启动引导过程详细剖析
·Linux操作系统Vim/Vi编程提速
·用户认证功能的SQUID代理服务器


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号