您的位置: 首页 arrow 技术资料 arrow web服务器 arrow AJAX及使用E4X编写Web服务脚本系列之三  

 

新闻快讯

    新仓信息技术有限公司新的网站架构于强大的cms系统Mambo,新的网站更加方便公司信息的发布。著名的开源软件Mambo架构于mysql+php,特别适合中小型门户网站的搭建,能大大减少企业建站的成本,毫不夸张的说,Mambo是最强大的cms系统之一,很多国内的所谓的cms在Mambo面前真的毫无是处。如果您需要架构基于mambo的网站,可以来电021-51089670获取更多信息,更多关于mambo的介绍请点击。。。。


 
AJAX及使用E4X编写Web服务脚本系列之三
2006-01-12
E4X 中的 XML 命名空间(Namespace)

如果您是一名 XML 高手,那么此时您可能想知道如何使用该语法来管理 XML 命名空间。这里有三种方式来实现该操作:

首先,您可以使用内嵌的 XML 语法:

var soapMsg = <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"/>;

rint(soapMsg.namespace());

http://www.w3.org/2003/05/soap-envelope

第二个方法是在创建元素之前设置缺省的 XML 命名空间:

default xml namespace = new Namespace("http://www.w3.org/2003/05/soap-envelope");


您可以将它设置为空字符串,以便对该缺省的命名空间进行重新设置,例如:

default xml namespace = ""


最后一种方法是使用 :: 运算符

var f = new Namespace("http://fremantle.org");

oapMsg.Body.f::GetStockQuote="IBM";

rint(soapMsg);

lt;s:Envelope xmlns:s=

"http://www.w3.org/2003/05/soap-envelope">

<s:Body>

<frem:GetStockQuote 

xmlns:frem="http://fremantle.org">

IBM

</frem:GetStockQuote>

</s:Body>

lt;/s:Envelope>
<ccid_page/>


XML 元素排序

E4X 所具有的一个明显的优点是它完全支持 XML,包括排序功能。许多从 XML 文档到相应编程语言对象的直接映射仅仅支持符合常规对象语义的 XML 语义子集——因此就失去了不仅能够表示对象而且还表示文档的功能。但是对本文来说,它是不合适的,只要简单查看一下该规范就可以看出,E4X XML 对象具有的内置功能能够对 XML 元素进行细致准确的排序。

在 XML 中使用 Javascript 表达式

在转向 Web 服务之前,我们向您介绍的最后一个内容——使用大括号“{}”。以上我们介绍了“内嵌的”XML。E4X 也允许您重新进入 JavaScript 环境,并且可以包括了计算后的表达式值。例如:

var num = 36;

var p = <paul><age>

{

num

}

</age></paul>

rint(p);

lt;paul>

<age>36</age>

lt;/paul>



到目前为止,我们已经介绍了 E4X 的基础知识,下面我们就可以使用这些基本知识进行以下操作。使用 E4X 来调用 Web 服务。本节中,我们将描述如何在以下两个环境中使用 E4X:

1. 使用 XMLHttpRequest 的 Mozilla 1.8

2. Java/Rhino

您可以很容易地在浏览器中使用 E4X 来调用 Web 服务。但是这里存在问题!到目前为止,唯一的支持 E4X 的浏览器是 Mozilla 1.8 的专业版。

不过我们并没有将其作为一种可移植的跨浏览器的解决方案来推荐,以下的实例演示了 E4X 如何以一种简单的方式来调用 Web 服务。在下一节中,我们将查看运行在 Rhino JavaScript 引擎中的另一种方法。

AJAX

该样本实例显示了向 SOAP 服务器发送和接收 SOAP 消息的浏览器。为了实现该操作,我们通过 XMLHttpRequest 对象来使用 E4X 。这个对象非常的有用,而且 Mozilla 和 Internet Explorer 浏览器都支持它,它允许运行在浏览器内部的脚本语言在后台中生成 HTTP 请求。实际上,这就是为什么 Google 的 GMail 能做到任何事情的原因。这种架构最近被命为 Asynchronous JavaScript+XML(AJAX)。

从根本上来说,AJAX 的目的是要通过一种比标准 HTML 和 HTTP 的“页面”模型更为灵活的方式与服务器进行交互,以此来提高 Web 页面的响应能力和可用性。有关这方面一个很好的样本是 Google Maps beta,它明显地比以前的映射 Web 站点更具交互性。

令人鼓舞的是,根据新闻报道,结合了 E4X 的 AJAX 的性能更优!我们将向您展示浏览器应用的两种版本。第一个版本演示了交互操作,而第二个版本隐藏了 Web 页面上的按钮和内部的工作过程,以此来展示交互性和异步性。

浏览器的安全性

为了演示浏览器的安全性,我们使用了 xmethods.net 上可用的标准 Web 服务。但是,这里还存在一个问题,因为一般来说,浏览器的安全性规则不允许脚本程序或者 Java applet 程序创建网络连接,除非是与生成该页面的服务器建立网络连接。否则,您需要有一个监控页面,它将您的按键操作“复制”到另外一个服务器。

但是您可以避开这种操作。为实现该操作,您需要进行两步。首先,您必须启用 Mozilla 配置中的用于脚本程序的升级特权。(假定您已经下载并安装了 Mozilla 1.8 beta)。

在该浏览器的地址栏中输入 about:config,然后将 signed.applets.codebase_principal_support 的值从 false 更新为 true。(出于安全性考虑,请记得在完成全部操作后设回原值。)

然后在脚本程序中,您可以请求使用升级特权。当该脚本语言运行时,将会提示用户使用这些特权。代码行为:

etscape.security.
PrivilegeManager.enablePrivilege
(
"UniversalXPConnect UniversalBrowserAccess"
);



其它的选择就是将服务和 Web 页面部署到诸如 IBM WebSphere Application Server 或者 Tomcat 之类的 Web 应用程序服务器中。例如,这种方式适用 Apache Axis 和 Axis 自带的缺省股票报价机样本实例。

用户登录
用户名

密码

记住我
忘记密码
没有账户? 马上注册
友情链接
申请链接