WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院数据库DB2 利用DB2 9原生XML和PHP来简化XML应用程序 阅读

利用DB2 9原生XML和PHP来简化XML应用程序

 2006-08-21 22:10:28 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤矂姊洪崷顓涙嫛闁稿妫濋幆鈧い蹇撴祩濡嫰姊洪崫鍕拱婵炲弶岣块幑銏犫攽婵犲嫮鏉搁梺鍝勬川婵兘鎮伴妷鈺傗拻濞达絽鎼敮璺侯熆閻熷府鏀荤紒鍌氱Т楗即宕煎锝呬壕闁哄啫鐗嗙粈鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娑扁偓妤€顭胯閸犳牠婀侀梺缁樕戦悷銉р偓姘煎枤缁粯銈i崘鈺冨幈濡炪倖鍔戦崐鏇㈠几鎼淬劍鐓熼煫鍥ь儏閸旀粓鏌曢崶褍顏€殿喗娼欒灒闁告繂瀚濠碉紕鍋戦崐鎴﹀垂濞差亝鍋¢柍鍝勬噹缁犳牠鏌嶉埡浣告殲闁稿海鍠栭弻鏇㈠炊瑜嶇花濠氭煙閸戙倖瀚�
核心提示: ajax(动态网站静态化) 核心 API(即所谓的 xml(标准化越来越近了)HttpRequest)的唯一用途就是发送 HTTP 请求,在 Web 浏览器与服务器之间进行数据交换,利用DB2 9原生XML和PHP来简化XML应用程序(5),Web 页面中运行的 JavaScript 代码,可以使用 xml(标准

   ajax(动态网站静态化) 核心 API(即所谓的 xml(标准化越来越近了)HttpRequest)的唯一用途就是发送 HTTP 请求,在 Web 浏览器与服务器之间进行数据交换。Web 页面中运行的 JavaScript 代码,可以使用 xml(标准化越来越近了)HttpRequest 将该请求参数提交至服务器端脚本,例如 Servlet 或 jsp(SUN企业级应用的首选) 页面。调用的 Servlet/jsp(SUN企业级应用的首选) 将发回一个响应,其中包含了一般用于不需刷新整个页面即可更新用户查看内容的数据。此种方法在性能和可用性方面均体现出了独有的优势,因为这将降低网络通信量,而且 Web UI 的使用几乎与桌面 GUI 一样。

   但是,开发这种用户界面并不简单,因为您必须在客户端上使用 JavaScript、在服务器端上使用 Java(或等效语言)实施数据交换、验证以及处理。然而,在许多情况下,考虑到将会由此获得的益处,付出额外精力构建一个基于 ajax(动态网站静态化) 的界面是值得的。

   在本文中,我将介绍一种用于在 ajax(动态网站静态化) 客户端和服务器之间传输数据的主要方法,并比较传统 Web 应用程序模型与该 ajax(动态网站静态化) 模型的不同点。此外,文中还将探讨在服务器端与客户端处理数据的技巧。

   首先,您将了解如何在客户端使用 JavaScript 编码请求对象的参数。您可以使用所谓的 URL 编码(Web 浏览器使用的默认编码),或可将请求参数包含在 xml(标准化越来越近了) 文档中。服务器将处理该请求,并返回一个其数据也必须进行编码的响应。本文将探讨 JavaScript Object Notation (JSON) 和 xml(标准化越来越近了),这些都是主要的响应数据格式选项。

   本文的大部分内容将主要介绍 ajax(动态网站静态化) 应用程序中通常使用的与 xml(标准化越来越近了) 相关的 API。在客户端,xml(标准化越来越近了) API 的作用虽非常有限,但已够用。在多数情况下,利用 xml(标准化越来越近了)HttpRequest 即可完成所有必需操作。此外,还可使用 JavaScript 在 Web 浏览器中分析 xml(标准化越来越近了) 文档并串行化 DOM 树。在服务器端,可用于处理 xml(标准化越来越近了) 文档的 API 和框架有很多种。本文将介绍如何使用针对 xml(标准化越来越近了) 的标准 Java API 来实施基本任务,该 API 支持 xml(标准化越来越近了) 模式、XPath、DOM 以及许多其他标准。

   通过本文,您可以了解到在 ajax(动态网站静态化) 应用程序中实现数据交换所用的最佳技巧和最新的 API。其中涉及的示例代码分别位于以下三个程序包中:util、model 和 feed。util 程序包中的类提供了用于 xml(标准化越来越近了) 分析、基于模式的验证、基于 XPath 的查询、DOM 串行化以及 JSON 编码的方法。model 程序包包含的示例数据模型可用于从 xml(标准化越来越近了) 文档进行初始化,然后再转换至 JSON 格式。model 目录中还有一个 Schema 示例,可用于 xml(标准化越来越近了) 验证。feed 程序包中的类可用于模拟数据馈送,其通过 ajax(动态网站静态化) 每 5 秒检索一次来获得信息,以刷新 Web 页面。本文阐释了如何通过终止未完成的 ajax(动态网站静态化) 请求并在使用完 xml(标准化越来越近了)HttpRequest 对象后将其删除,避免 Web 浏览器的内存泄漏。

   web 目录中包含了 jsp(SUN企业级应用的首选) 和 JavaScript 示例。ajax(动态网站静态化)Util.js 中包含了发送 ajax(动态网站静态化) 请求、终止请求以及处理 HTTP 错误的实用函数。该文件还提供了可用于 xml(标准化越来越近了) 和 URL 编码、xml(标准化越来越近了) 分析以及 DOM 串行化的 JavaScript 实用程序。ajax(动态网站静态化)Ctrl.jsp(SUN企业级应用的首选) 文件充当 ajax(动态网站静态化) 控制器,接收每一个 ajax(动态网站静态化) 请求、转发参数至数据模型,或供给处理,然后返回 ajax(动态网站静态化) 响应。其余的 Web 文件都是演示如何使用该实用方法的示例。

在客户端构建请求

   将数据发送至 Web 服务器的最简单方法是将请求编码为查询字符串,该字符串根据使用的 HTTP 方法,既可附加至 URL,也可包含在请求正文中。如果需要发送复杂的数据结构,更好的解决方案是将信息编码在 xml(标准化越来越近了) 文档中。我将在本部分中介绍这两种方法。

   编码请求参数。开发传统 Web 应用程序时,无需担心表单数据的编码,因为 Web 浏览器会在用户提交数据时自动执行该操作。但是,在 ajax(动态网站静态化) 应用程序中,您必须亲自编码请求参数。JavaScript 提供了一个非常有用的函数 escape(),该函数用 %HH(其中 HH 是十六进制代码)替换任何无法成为 URL 一部分的字符。例如,任何空白字符都用 %20 替换。

   示例代码下载中提供了一个实用函数 buildQueryString(),该函数可连接检索自数组的参数,通过 = 将每个参数的名称和值相分离,并将 & 字符置于每个名称-值对之间:

function buildQueryString(params) {var query = "";for (var i = 0; i < params.length; i++) {query += (i > 0 ? "&" : "")+ escape(params[i].name) + "="+ escape(params[i].value);    }return query;}

假设您要编码以下参数:

var someParams = [{ name:"name",  value:"John Smith" },{ name:"email", value:"john@company.com" },{ name:"phone", value: "(123) 456 7890" }];

buildQueryString(someParams) 调用将生成包含以下内容的结果:

name=John%20Smith&email=john@company.com&phone=%28123%29%20456%207890

   如果希望使用 GET 方法,则必须将查询附加至 URL 的 ? 字符之后。使用 POST 时,应通过 setRequestHeader() 将 Content-Type 标题设置为 application/x-www-form-urlencoded,且必须将该查询字符串传递至 xml(标准化越来越近了)HttpRequest 的 send() 方法,这会将该 HTTP 请求发送至服务器。

   创建 xml(标准化越来越近了) 文档。利用字符串通过其属性和数据构建元素是用 JavaScript 创建 xml(标准化越来越近了) 文档最简单的方法。如果采用这种解决方案,则需要一个实用方法来转义 &、<、>、"、以及 ' 字符:

function escapexml(标准化越来越近了)(content) {if (content == undefined)return "";if (!content.length || !content.charAt)content = new String(content);var result = "";var length = content.length;for (var i = 0; i < length; i++) {var ch = content.charAt(i);switch (ch) {case '&':result += "&";break;case '<':result += "<";break;case '>':result += ">";break;case '"':result += """;break;case '\'':result += "'";break;default:result += ch;        }    }return result;}

要使任务更为简单,还需要一些其他实用程序方法,例如:

function attribute(name, value) {return " " + name + "=\"" + escapexml(标准化越来越近了)(value) + "\"";}

以下示例从一个具有以下三个属性的对象的数组构建一个 xml(标准化越来越近了) 文档:symbol、shares 和 paidPrice:

function buildPortfolioDoc(stocks) {var xml(标准化越来越近了) = "<portfolio>";for (var i = 0; i < stocks.length; i++) {var stock = stocks[i];xml(标准化越来越近了) += "<stock ";xml(标准化越来越近了) += attribute("symbol", stock.symbol);xml(标准化越来越近了) += attribute("shares", stock.shares);xml(标准化越来越近了) += attribute("paidPrice", stock.paidPrice);xml(标准化越来越近了) += "";    }xml(标准化越来越近了) += "</portfolio>";return xml(标准化越来越近了);}

   如果您喜好使用 DOM,则可使用 Web 浏览器的 API 分析 xml(标准化越来越近了) 和串行化 DOM 树。通过 IE,您可以用新的 ActiveXObject("Microsoft.xml(标准化越来越近了)DOM") 创建一个空文档。然后,可以使用 loadxml(标准化越来越近了)() 或 load() 方法分别从字符串或 URL 分析该 xml(标准化越来越近了)。在使用 IE 的情况下,每个节点都有一个称为 xml(标准化越来越近了) 的属性,您可以利用它获得该节点及其所有子节点的 xml(标准化越来越近了) 表示。因此,您可以分析 xml(标准化越来越近了) 字符串、修改 DOM 树,然后将该 DOM 串行化回 xml(标准化越来越近了)。

   Firefox 和 Netscape 浏览器允许您使用 document.implementation.createDocument(...) 创建一个空文档。然后,可以使用 createElement()、createTextNode()、createCDATASection() 等创建 DOM 节点。Mozilla 浏览器还提供了两个分别名为 DOMParser 和 xml(标准化越来越近了)Serializer 的 API。DOMParser API 包含 parseFromStream() 和 parseFromString() 方法。xml(标准化越来越近了)Serializer 类具有串行化 DOM 树的相应方法:serializeToStream() 和 serializeToString()。

以下函数分析一个 xml(标准化越来越近了) 字符串并返回 DOM 文档:

function parse(xml(标准化越来越近了)) {var dom;try{dom = new ActiveXObject("Microsoft.xml(标准化越来越近了)DOM");dom.async = false;dom.loadxml(标准化越来越近了)(xml(标准化越来越近了));} catch (error) {try{var parser = new DOMParser();dom = parser.parseFromString(xml(标准化越来越近了), "text/xml(标准化越来越近了)");delete parser;} catch (error2) {if (debug)alert("xml(标准化越来越近了) parsing is not supported.");        }    }return dom;}

第二个函数串行化一个 DOM 节点及其所有子节点,将 xml(标准化越来越近了) 作为字符串返回:

function serialize(dom) {var xml(标准化越来越近了) = dom.xml(标准化越来越近了);if (xml(标准化越来越近了) == undefined) {try{var serializer = new xml(标准化越来越近了)Serializer();xml(标准化越来越近了) = serializer.serializeToString(dom);delete serializer;} catch (error) {if (debug)alert("DOM serialization is not supported.");        }    }return xml(标准化越来越近了);}

   还可以使用 xml(标准化越来越近了)HttpRequest 作为分析程序或串行化程序。在从服务器接收到对 ajax(动态网站静态化) 请求的响应后,该响应会自动进行分析。可通过 xml(标准化越来越近了)HttpRequest 的 responseText 和 responsexml(标准化越来越近了) 属性分别访问文本版本和 DOM 树。此外,在将 DOM 树传递至 send() 方法时自动将其串行化。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:利用 DB 原生

编辑录入:coldstar [复制链接] [打 印]
赞助商链接