摘 要:簡要介紹了一種通用的,動態樹型結構的實現方案,該方案基于Asynchronous JavaScript and XML,結合Struts框架設計實現了結構清晰、擴展性良好的多層架構,數據存儲于數據庫,結合XML描述樹的節點信息,使得任何按預定的XML文檔描述的信息都可以通過動態樹來展現。
關鍵詞:MVC模式;Ajax;樹型結構;字典序
樹型結構是一類應用非常廣泛的數據結構。人類社會中宗族的族譜和現代企業的組織形式都是樹型結構。在計算機領域中,文件系統中文件的管理結構、存儲器管理中的頁表、數據庫中的索引等也都是樹型結構。隨著Internet的飛速發展,樹型結構在瀏覽器/服務器(Browser/Server,簡稱B/S)應用系統的應用也越來越廣泛。
目前,在互聯網上廣泛存在、應用的樹型結構一般分為兩種:靜態和動態結構。靜態結構存在最多、實現簡單,但是靜態導致不能改變樹的結構和內容,無法反映樹的節點信息的變化;而實現相對復雜的動態構造樹,雖然可以動態增加、刪除、更新節點信息,但是大部分不能直接拖放節點來改變樹的結構以及節點間的次序,并且反復刷新整個頁面,給用戶維護帶來了許多不便。本文提出了一種基于Ajax (Asynchronous JavaScript and XML)通用的、動態加載節點的解決方案。實現上采用J2EE多層架構,樹節點的描述信息采用數據庫存儲,以可擴展標記語言(eXtensible Markup Language,簡稱XML)展現給JavaScript解析,支持無刷新地增加、刪除、更新節點信息,以及拖放節點來改變樹的結構和節點間的次序。文中第1部分簡要介紹了Ajax技術;第2部分詳細介紹了該方案的技術實現過程;第3部分分析了該方案的效率。
1、Ajax簡介 Ajax概念的最早提出者Jesse James Garrett認為:Ajax并不是一門新的語言或技術,它實際上是幾項技術按一定的方式組合在共同的協作中發揮各自的作用,它包括:
·使用擴展超媒體標記語言(eXtended Hypertext Markup Language,簡稱XHTML)和級聯樣式單(Cascading Style Sheet,簡稱CSS)標準化呈現;
·使用文檔對象模型(Document Object Model,簡稱DOM)實現動態顯示和交互;
·使用可擴展標記語言(eXtensible Markup Language,簡稱XML)和可擴展樣式表轉換(eXtensible Stylesheet Language Transformation,簡稱XSLT)進行數據交換與處理;
·使用XMLHTTP組件XMLHttpRequest對象進行異步數據讀取;
·最后用JavaScript綁定和處理所有數據。
Ajax的工作原理如圖1所示,它相當于在用戶和服務器之間加了一個中間層,使用戶操作與服務器響應異步化。并不是所有的用戶請求都提交給服務器,像— 些數據驗證和數據處理等都交給Ajax引擎處理,只有確定需要從服務器讀取新數據時再由Ajax引擎代為向服務器提交請求。這樣就把一些服務器負擔的工作轉嫁到客戶端,利用客戶端閑置的處理能力來處理,減輕服務器和帶寬的負擔,從而達到節約ISP的空間及帶寬租用成本的目的。

圖 1 未使用Ajax(a)和使用Ajax(b)的web應用比較
2、總體設計方案
傳統的服務器程序采用Model 1開發模型,通常將業務邏輯、服務器端處理過程和HTML代碼集中在一起表示,快速完成應用開發。Model 1 在小規模應用開發時優勢明顯,但是應用實現一般是基于過程的,一組服務器頁面實現一個流程,如果流程改動將導致多個地方修改,非常不利于應用的擴展和更新。此外業務邏輯和表示邏輯混合在服務器頁面中,耦合緊密,無法模塊化,導致代碼無法復用。
Model 2則解決了這些問題,它是面向對象的MVC模式(Model-View-Controller,模型-視圖-控制器)在Web開發中的應用,Model表示應用的業務邏輯,View是應用的表示層頁面,Controller是提供應用的處理過程控制。通過這種MVC設計模式把應用邏輯,處理過程和顯示邏輯劃分成不同的組件、模塊實現,組件間可以進行交互和重用。
本方案是采用J2EE的多層架構,設計時結合Struts框架將表示層、業務邏輯層和數據層劃分成不同的模塊。表示層專注于樹的外觀顯示,業務邏輯層為服務器端處理程序,處理樹的生成、變化,為減少耦合性,該程序全部模塊化實現,不在表示頁面嵌入服務器程序;模型層是數據的存儲和表示。下面分別介紹各層實現。
原文鏈接:http://www.7dspace.com/doc/44/0512/2005122906292220003.htm