亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

Bs結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法

文檔序號(hào):6442578閱讀:426來(lái)源:國(guó)知局
專利名稱:Bs結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法
技術(shù)領(lǐng)域
本方法采用JSON的數(shù)據(jù)交換格式,實(shí)現(xiàn)動(dòng)態(tài)生成樹(shù)型目錄結(jié)構(gòu)進(jìn)行快速檢索的方法。
背景技術(shù)
BS (Browser/Server)結(jié)構(gòu)軟件中,Ajax無(wú)疑是最流行的Web技術(shù),這一杰出的方法可以將笨拙的Web界面轉(zhuǎn)化成交互性的應(yīng)用程序。它采用客戶端腳本與Web服務(wù)器交換數(shù)據(jù),所以,不必采用會(huì)中斷交互的完整頁(yè)面刷新,就可以動(dòng)態(tài)地更新Web頁(yè)面。使用Ajax, 可以創(chuàng)建更加豐富、更加動(dòng)態(tài)的Web應(yīng)用程序用戶界面,其即時(shí)性與可用性甚至能夠接近本機(jī)桌面應(yīng)用程序。在異步的交互性應(yīng)用程序中發(fā)送和接收信息時(shí),可以選擇以純文本和XML作為數(shù)據(jù)格式。JSON的出現(xiàn),使我們有了一個(gè)更好的選擇。JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。它基于Javakript Programming Language, Standard ECMA-262 3rd Edition-December 1999 的一個(gè)子集。JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C,C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。JSON與XML最大的不同在于XML是一個(gè)完整的標(biāo)記語(yǔ)言,而JSON不是,這使的XML 在程序判讀上需要比較多的功夫。主要的原因在于XML的設(shè)計(jì)理念與JSON不同。XML利用標(biāo)記語(yǔ)言的特性提供了絕佳的延展性(如XPath),在數(shù)據(jù)存儲(chǔ),擴(kuò)展及高級(jí)檢索方面具備對(duì)JSON的優(yōu)勢(shì),而JSON則由于比XML更加小巧,以及瀏覽器的內(nèi)建快速解析支持,使得其更適用于網(wǎng)絡(luò)數(shù)據(jù)傳輸領(lǐng)域。大部分軟件中,都要采用樹(shù)形結(jié)構(gòu)導(dǎo)航,如顯示目錄樹(shù)、顯示地區(qū)、員工組織架構(gòu)、 分類顯示商品等。在層次復(fù)雜的多級(jí)樹(shù)形結(jié)構(gòu)目錄中,往往要展開(kāi)多級(jí)目錄才能找到我們需要的子項(xiàng),若采用搜索的方式,又破壞了其分明的層次結(jié)構(gòu),如何實(shí)現(xiàn)快速檢索,又能展示目錄的層次,是本方法需要解決的問(wèn)題。例如,在輸入框中輸入商品名稱或拼音簡(jiǎn)寫,在樹(shù)形結(jié)構(gòu)區(qū)域即可動(dòng)態(tài)生成相關(guān)商品及分類的層次樹(shù)。

發(fā)明內(nèi)容
發(fā)明目的提出一種BS結(jié)構(gòu)軟件中快速定位樹(shù)型結(jié)構(gòu)子項(xiàng),并展示其目錄層次的方法。技術(shù)方案如下一種BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,包括步驟1)取出樹(shù)形節(jié)點(diǎn)信息;2)數(shù)據(jù)的緩存;3)判斷節(jié)點(diǎn)是否包含檢索項(xiàng);4)期望數(shù)據(jù)的結(jié)構(gòu)轉(zhuǎn)換;5)數(shù)據(jù)的交互;所述步驟4)中,把期望數(shù)據(jù)按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式;所述步驟5)中,TOB頁(yè)面的后臺(tái)的處理內(nèi)容將期望的JSON格式數(shù)據(jù)及時(shí)通過(guò)預(yù)先設(shè)定的Ajax回調(diào)函數(shù)返回前臺(tái)WEB頁(yè)面,使用JavMcript內(nèi)置方法解析JSON格式數(shù)據(jù), 生成期望數(shù)據(jù)的樹(shù)形結(jié)構(gòu)表現(xiàn);采用Ajax技術(shù)來(lái)實(shí)現(xiàn)WEB頁(yè)面的后臺(tái)操作的步驟如下51)實(shí)現(xiàn)輸入框的觸發(fā)函數(shù)——在用戶輸入信息時(shí)可以觸發(fā)Ajax的主體函數(shù);52)實(shí)現(xiàn)回調(diào)函數(shù)的注冊(cè)——在后臺(tái)服務(wù)數(shù)據(jù)處理完畢后通過(guò)Ajax傳輸引擎將處理后的數(shù)據(jù)輸入到注冊(cè)的回調(diào)函數(shù);53)實(shí)現(xiàn)回調(diào)函數(shù)的回寫功能——由回調(diào)函數(shù)將輸入的數(shù)據(jù)回寫WEB前臺(tái)頁(yè)面。所述步驟1)中,采用SQL語(yǔ)句查詢方式與數(shù)據(jù)庫(kù)交互,獲取所有樹(shù)形目錄信息。所述步驟幻中,對(duì)數(shù)據(jù)來(lái)源采用了 java堆內(nèi)存技術(shù)來(lái)緩存數(shù)據(jù)Java虛擬機(jī)具有一個(gè)堆Heap,堆是運(yùn)行時(shí)數(shù)據(jù)區(qū)域,所有類實(shí)例和數(shù)組的內(nèi)存均從此處分配,堆是在Java虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建的;啟動(dòng)時(shí),會(huì)將所有的樹(shù)形結(jié)構(gòu)目錄放入堆內(nèi)存,并以靜態(tài)變量的形式供需要的地方訪問(wèn),這樣用適當(dāng)?shù)目臻g即內(nèi)存換得了數(shù)據(jù)庫(kù)訪問(wèn)的時(shí)間;緩存在內(nèi)存中的數(shù)據(jù)以一種數(shù)據(jù)結(jié)構(gòu)存在,該數(shù)據(jù)結(jié)構(gòu)必須通用和高效;首先利用面向?qū)ο蠹夹g(shù),把樹(shù)節(jié)點(diǎn)抽象為對(duì)象"TreeNode ;TreeNod包含以下屬性和行為id-節(jié)點(diǎn)IcUtext-節(jié)點(diǎn)名稱、pinYin-節(jié)點(diǎn)英文縮寫、userdata-節(jié)點(diǎn)所包含的的數(shù)值、parentId-父節(jié)點(diǎn)ID,另外還包括樹(shù)節(jié)點(diǎn)的特性isSelect-節(jié)點(diǎn)是否被選中、sOpen-是否打開(kāi)、 isCall-是否要調(diào)用單擊事件、isChecked-如果是checked類型則默認(rèn)是否選中、 hasChild-判斷該節(jié)點(diǎn)是否有子節(jié)點(diǎn)、nocheckbox-在整棵樹(shù)都設(shè)置成checlibox時(shí)設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選、disabled-在整棵樹(shù)都設(shè)置成checkbox時(shí)設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選;對(duì)JAVA中的HashMap進(jìn)行了封裝和優(yōu)化,實(shí)現(xiàn)了一種雙鍵的HashMap ;具體是key-key-value的健健值對(duì),第一個(gè)鍵是節(jié)點(diǎn)Id,第二個(gè)鍵是節(jié)點(diǎn)父Id ;在取節(jié)點(diǎn)對(duì)象時(shí),以getld方式取到某一節(jié)點(diǎn)對(duì)象,getFatherld方式取得是父Id —樣的節(jié)點(diǎn)集合;HashMap的優(yōu)化主要是在對(duì)其初始化上,HashMap會(huì)有一個(gè)默認(rèn)的初始大小,當(dāng)往里面put對(duì)象時(shí),一旦超過(guò)默認(rèn)大小,它就會(huì)自動(dòng)進(jìn)行擴(kuò)容;HashMap初始化主要和初始大小和加載因子的乘積有關(guān)。所述步驟幻中,檢索條件為樹(shù)節(jié)點(diǎn)的拼音縮寫或者節(jié)點(diǎn)名稱,拼音縮寫都為大寫,而java的正則表達(dá)式對(duì)檢索條件進(jìn)行過(guò)濾控制匹配,把小寫字母變成大寫,正則表達(dá)式是字母reg=/T\[a-z] I [A_Z]/g通過(guò)javascript動(dòng)態(tài)將前臺(tái)WEB客戶的輸入信息異步傳輸?shù)胶笈_(tái)處理程序,執(zhí)行篩選若包含檢索項(xiàng),則該節(jié)點(diǎn)及其子節(jié)點(diǎn)都顯示;若不包含檢索項(xiàng),則遞歸檢索其所有子孫節(jié)點(diǎn);若子孫節(jié)點(diǎn)不包含檢索條件,中斷本次循環(huán),進(jìn)入下次循環(huán);若子孫節(jié)點(diǎn)包含檢索條件,則該節(jié)點(diǎn)顯示,并遞歸執(zhí)行2,找出該節(jié)點(diǎn)下需要顯示的子孫節(jié)點(diǎn)。所述步驟4)中,在篩選遍歷的同時(shí),把期望數(shù)據(jù)按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式。


圖1本發(fā)明方法流程示意圖。
具體實(shí)施例方式本發(fā)明的BS結(jié)構(gòu)軟件中基于JSON的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)快速目錄檢索方法中,最核心的問(wèn)題是如何高效的根據(jù)檢索條件構(gòu)造出樹(shù)形,本發(fā)明方案采用的算法如下1)取出樹(shù)形節(jié)點(diǎn)信息。采用傳統(tǒng)SQL語(yǔ)句查詢方式與數(shù)據(jù)庫(kù)交互,獲取所有樹(shù)形目錄信息;2)數(shù)據(jù)的緩存。由于需要根據(jù)檢索條件快速的構(gòu)造樹(shù)形,樹(shù)形節(jié)點(diǎn)信息勢(shì)必不能采用頻繁訪問(wèn)數(shù)據(jù)庫(kù)來(lái)加載的方式,一是降低數(shù)據(jù)庫(kù)壓力,二是節(jié)省了與數(shù)據(jù)庫(kù)交互的時(shí)間。所以對(duì)數(shù)據(jù)來(lái)源采用了 java堆內(nèi)存技術(shù)來(lái)緩存數(shù)據(jù)Java虛擬機(jī)具有一個(gè)堆(Heap),堆是運(yùn)行時(shí)數(shù)據(jù)區(qū)域,所有類實(shí)例和數(shù)組的內(nèi)存均從此處分配。堆是在Java虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建的。當(dāng)系統(tǒng)啟動(dòng)時(shí),會(huì)將所有的樹(shù)形結(jié)構(gòu)目錄放入堆內(nèi)存,并以靜態(tài)變量的形式供需要的地方訪問(wèn),這樣用適當(dāng)?shù)目臻g(內(nèi)存)換得了數(shù)據(jù)庫(kù)訪問(wèn)的時(shí)間。緩存在內(nèi)存中的數(shù)據(jù)必須以一種適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)存在,該數(shù)據(jù)結(jié)構(gòu)必須符合以下條件a)通用構(gòu)造的樹(shù)形內(nèi)容可能是商品類型、省市區(qū)、又或者其他,必須提供一種通用的數(shù)據(jù)格式,使得任何不同的需求都能夠通過(guò)統(tǒng)一的接口達(dá)到快速檢索構(gòu)造樹(shù)的目的, 而不必每一種需求都需要寫一套實(shí)現(xiàn);b)高效這種數(shù)據(jù)結(jié)構(gòu)必須在檢索分析數(shù)據(jù)的時(shí)候顯得高效。首先利用面向?qū)ο蠹夹g(shù),本發(fā)明把樹(shù)節(jié)點(diǎn)抽象為對(duì)象TreeNode,它包含以下屬性和行為id(節(jié)點(diǎn)Id), text (節(jié)點(diǎn)名稱),pinYin (節(jié)點(diǎn)英文縮寫),userdata(節(jié)點(diǎn)所包含的的數(shù)值,供前臺(tái)JS使用),parentlcK父節(jié)點(diǎn)ID),另外還包括一些樹(shù)節(jié)點(diǎn)的特性isSelect (節(jié)點(diǎn)是否被選中),isOpen (是否打開(kāi)),isCall (是否要調(diào)用單擊事件), isCheckecK如果是checked類型,默認(rèn)是否選中),hasChild (判斷該節(jié)點(diǎn)是否有子節(jié)點(diǎn)), nocheclibox (在整棵樹(shù)都設(shè)置成checlibox時(shí),設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選),disabled (在整棵樹(shù)都設(shè)置成checkbox時(shí),設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選)對(duì)JAVA中的HashMap進(jìn)行了封裝和優(yōu)化,實(shí)現(xiàn)了一種雙鍵的HashMap,具體是 (key-key-value)的健健值對(duì),第一個(gè)鍵是節(jié)點(diǎn)Id,第二個(gè)鍵是節(jié)點(diǎn)父Id,在取節(jié)點(diǎn)對(duì)象時(shí),getld方式取到某一節(jié)點(diǎn)對(duì)象,getFatherld方式取得是父Id —樣的節(jié)點(diǎn)集合,這樣在操作樹(shù)形結(jié)構(gòu)時(shí)不必使用大量代碼實(shí)現(xiàn)類似的操作。此外HashMap的優(yōu)化主要體現(xiàn)在對(duì)其初始化上,HashMap會(huì)有一個(gè)默認(rèn)的初始大小,當(dāng)我們往里面put對(duì)象時(shí),當(dāng)超過(guò)默認(rèn)大小,它就會(huì)自己進(jìn)行一個(gè)擴(kuò)容,這里是性能的主要消耗處。HashMap初始化主要和兩個(gè)因素的乘積有關(guān)DEFAULT_INITIAL_CAPACITY (初始大小)*DEFAULT_L0AD_FACT0R (加載因子)那么我們只要根據(jù)初始數(shù)據(jù)的數(shù)量初始化雙鍵Map就能對(duì)其進(jìn)行優(yōu)化,提高性能。3)判斷節(jié)點(diǎn)是否包含檢索項(xiàng)。檢索條件為樹(shù)節(jié)點(diǎn)的拼音縮寫或者節(jié)點(diǎn)名稱,拼音縮寫都為大寫,而java的正則表達(dá)式的強(qiáng)大而有效的功能能夠?qū)z索條件進(jìn)行過(guò)濾控制匹配,幫助我們把小寫字母變成大寫,正則表達(dá)式如下字母reg=/T\[a-z] I [A_Z]/g通過(guò)javascript動(dòng)態(tài)將前臺(tái)WEB客戶的輸入信息異步傳輸?shù)胶笈_(tái)處理程序,執(zhí)行篩選1)若包含,則該節(jié)點(diǎn)及其子節(jié)點(diǎn)都顯示,2)若不包含,則遞歸檢索其所有子孫節(jié)點(diǎn),①若子孫節(jié)點(diǎn)不包含檢索條件,中斷本次循環(huán),進(jìn)入下次循環(huán)。②若子孫節(jié)點(diǎn)包含檢索條件,則該節(jié)點(diǎn)顯示,并遞歸執(zhí)行2,找出該節(jié)點(diǎn)下需要顯示的子孫節(jié)點(diǎn)。4)期望數(shù)據(jù)的結(jié)構(gòu)轉(zhuǎn)換。在篩選遍歷的同時(shí),期望數(shù)據(jù)將按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式。5)數(shù)據(jù)的交互。后臺(tái)的處理內(nèi)容將期望的JSON格式數(shù)據(jù),及時(shí)通過(guò)預(yù)先設(shè)定的Ajax回調(diào)函數(shù)返回前臺(tái)WEB頁(yè)面,使用JavMcript內(nèi)置方法解析JSON格式數(shù)據(jù),生成期望數(shù)據(jù)的樹(shù)形結(jié)構(gòu)表現(xiàn)。為了實(shí)現(xiàn)需求,需要采用Ajax技術(shù)來(lái)實(shí)現(xiàn)TOB頁(yè)面的后臺(tái)操作,步驟如下1)實(shí)現(xiàn)輸入框的觸發(fā)函數(shù)——在用戶輸入信息時(shí)可以觸發(fā)Ajax的主體函數(shù);2)實(shí)現(xiàn)回調(diào)函數(shù)的注冊(cè)——在后臺(tái)服務(wù)數(shù)據(jù)處理完畢后通過(guò)Ajax傳輸引擎將處理后的數(shù)據(jù)輸入到注冊(cè)的回調(diào)函數(shù);3)實(shí)現(xiàn)回調(diào)函數(shù)的回寫功能——由回調(diào)函數(shù)將輸入的數(shù)據(jù)回寫WEB前臺(tái)頁(yè)面。下面結(jié)合具體實(shí)施方式
和附圖對(duì)本技術(shù)方案進(jìn)一步說(shuō)明如下步驟一,根據(jù)需求構(gòu)造TreeNode對(duì)象,建立雙鍵HashMap類MultiKeyMap,對(duì)其進(jìn)行封裝。提供方法如下public V put (K pkey, K fkey, V value),往 MultiKeyMap 中力口入某個(gè)對(duì)象;public V get (K pkey),根據(jù)節(jié)點(diǎn)ID取得某個(gè)對(duì)象;public V remove (K pkey),根據(jù)節(jié)點(diǎn) ID 從 MultiKeyMap 中刪除某個(gè)對(duì)象;public Collection<V>getByFKey (K fkey),取得父 ID 為 fkey 的對(duì)象集合。步驟二,在系統(tǒng)啟動(dòng)進(jìn)行初始化時(shí),從數(shù)據(jù)庫(kù)查詢所有樹(shù)節(jié)點(diǎn)的數(shù)據(jù)并構(gòu)造成 MultiKeyMap,存入java堆內(nèi),供程序使用。步驟三,用JAVA實(shí)現(xiàn)動(dòng)態(tài)匹配檢索條件并構(gòu)造樹(shù)的方法以及組織JSON格式的工具類。步驟四,按照Ajax工作模型,建立TOB服務(wù)端的服務(wù)功能,提供根據(jù)樹(shù)形節(jié)點(diǎn)名稱或者拼音縮寫查詢的功能。為此,設(shè)計(jì)編寫了相應(yīng)的krvlet服務(wù)接受代碼,這段代碼負(fù)責(zé)接受從客戶端的查詢請(qǐng)求、實(shí)現(xiàn)動(dòng)態(tài)構(gòu)造樹(shù)形、并返回JSON格式的結(jié)果。步驟五,在展現(xiàn)前臺(tái)界面的Jsp代碼中,需要實(shí)現(xiàn)Ajax工作模型的客戶端代碼 (JavaScript語(yǔ)言實(shí)現(xiàn))。首先,編寫Ajax引擎的初始化方法;構(gòu)建Ajax的引擎發(fā)送方法, 通過(guò)實(shí)現(xiàn)Http的POST方法向服務(wù)器發(fā)送相關(guān)的數(shù)據(jù),同時(shí)向Ajax的引擎注冊(cè)回調(diào)函數(shù), 以實(shí)現(xiàn)返回?cái)?shù)據(jù)的處理功能。步驟六,實(shí)現(xiàn)Ajax的回調(diào)函數(shù),實(shí)現(xiàn)數(shù)據(jù)回寫功能的JavMcript函數(shù),并在調(diào)用 Ajax引擎時(shí)將其注冊(cè)供Ajax引擎使用。函數(shù)實(shí)現(xiàn)了,在服務(wù)端返回JSON格式的數(shù)據(jù)后,使用JavMcript內(nèi)置方法解析,通過(guò)樹(shù)形組件展示樹(shù)形目錄信息。
權(quán)利要求
1.一種BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,其特征是包括步驟1)取出樹(shù)形節(jié)點(diǎn)信息;2)數(shù)據(jù)的緩存;3)判斷節(jié)點(diǎn)是否包含檢索項(xiàng);4)期望數(shù)據(jù)的結(jié)構(gòu)轉(zhuǎn)換;5)數(shù)據(jù)的交互;所述步驟4)中,把期望數(shù)據(jù)按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式; 所述步驟幻中,WEB頁(yè)面的后臺(tái)的處理內(nèi)容將期望的JSON格式數(shù)據(jù)及時(shí)通過(guò)預(yù)先設(shè)定的Ajax回調(diào)函數(shù)返回前臺(tái)WEB頁(yè)面,使用JavMcript內(nèi)置方法解析JSON格式數(shù)據(jù),生成期望數(shù)據(jù)的樹(shù)形結(jié)構(gòu)表現(xiàn);采用Ajax技術(shù)來(lái)實(shí)現(xiàn)TOB頁(yè)面的后臺(tái)操作的步驟如下51)實(shí)現(xiàn)輸入框的觸發(fā)函數(shù)——在用戶輸入信息時(shí)可以觸發(fā)Ajax的主體函數(shù);52)實(shí)現(xiàn)回調(diào)函數(shù)的注冊(cè)——在后臺(tái)服務(wù)數(shù)據(jù)處理完畢后通過(guò)Ajax傳輸引擎將處理后的數(shù)據(jù)輸入到注冊(cè)的回調(diào)函數(shù);53)實(shí)現(xiàn)回調(diào)函數(shù)的回寫功能——由回調(diào)函數(shù)將輸入的數(shù)據(jù)回寫WEB前臺(tái)頁(yè)面。
2.根據(jù)權(quán)利要求1所述BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,其特征是所述步驟1)中,采用SQL語(yǔ)句查詢方式與數(shù)據(jù)庫(kù)交互,獲取所有樹(shù)形目錄信息。
3.根據(jù)權(quán)利要求1所述BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,其特征是所述步驟2)中,對(duì)數(shù)據(jù)來(lái)源采用了 java堆內(nèi)存技術(shù)來(lái)緩存數(shù)據(jù)Java虛擬機(jī)具有一個(gè)堆Heap,堆是運(yùn)行時(shí)數(shù)據(jù)區(qū)域,所有類實(shí)例和數(shù)組的內(nèi)存均從此處分配,堆是在Java虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建的;啟動(dòng)時(shí),會(huì)將所有的樹(shù)形結(jié)構(gòu)目錄放入堆內(nèi)存, 并以靜態(tài)變量的形式供需要的地方訪問(wèn),這樣用適當(dāng)?shù)目臻g即內(nèi)存換得了數(shù)據(jù)庫(kù)訪問(wèn)的時(shí)間;緩存在內(nèi)存中的數(shù)據(jù)以一種數(shù)據(jù)結(jié)構(gòu)存在,該數(shù)據(jù)結(jié)構(gòu)必須通用和高效; 首先利用面向?qū)ο蠹夹g(shù),把樹(shù)節(jié)點(diǎn)抽象為對(duì)象TreeNode ; TreeNod包含以下屬性和行為id-節(jié)點(diǎn)Id、text-節(jié)點(diǎn)名稱、pinYin-節(jié)點(diǎn)英文縮寫、userdata-節(jié)點(diǎn)所包含的的數(shù)值、parentId-父節(jié)點(diǎn) ID,另外還包括樹(shù)節(jié)點(diǎn)的特性dsSelect-節(jié)點(diǎn)是否被選中、sOpen-是否打開(kāi)、isCall-是否要調(diào)用單擊事件、isChecked-如果是checked類型則默認(rèn)是否選中、hasChild-判斷該節(jié)點(diǎn)是否有子節(jié)點(diǎn)、nocheckbox-在整棵樹(shù)都設(shè)置成checkbox時(shí)設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選、 disabled-在整棵樹(shù)都設(shè)置成checkbox時(shí)設(shè)置該節(jié)點(diǎn)是否帶有復(fù)選;對(duì)JAVA中的HashMap進(jìn)行了封裝和優(yōu)化,實(shí)現(xiàn)了一種雙鍵的HashMap ; 具體是key-key-value的健健值對(duì),第一個(gè)鍵是節(jié)點(diǎn)Id,第二個(gè)鍵是節(jié)點(diǎn)父Id ;在取節(jié)點(diǎn)對(duì)象時(shí),以getld方式取到某一節(jié)點(diǎn)對(duì)象,getFatherld方式取得是父Id —樣的節(jié)點(diǎn)集合;HashMap的優(yōu)化主要是在對(duì)其初始化上,HashMap會(huì)有一個(gè)默認(rèn)的初始大小,當(dāng)往里面 put對(duì)象時(shí),一旦超過(guò)默認(rèn)大小,它就會(huì)自動(dòng)進(jìn)行擴(kuò)容;HashMap初始化主要和初始大小和加載因子的乘積有關(guān)。
4.根據(jù)權(quán)利要求1所述BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,其特征是所述步驟3)中,檢索條件為樹(shù)節(jié)點(diǎn)的拼音縮寫或者節(jié)點(diǎn)名稱,拼音縮寫都為大寫,而java的正則表達(dá)式對(duì)檢索條件進(jìn)行過(guò)濾控制匹配,把小寫字母變成大寫,正則表達(dá)式是 字母:reg = /[“\[a-z] | [A_Z]/g通過(guò)javascript動(dòng)態(tài)將前臺(tái)WEB客戶的輸入信息異步傳輸?shù)胶笈_(tái)處理程序,執(zhí)行篩選a)若包含檢索項(xiàng),則該節(jié)點(diǎn)及其子節(jié)點(diǎn)都顯示;b)若不包含檢索項(xiàng),則遞歸檢索其所有子孫節(jié)點(diǎn);①若子孫節(jié)點(diǎn)不包含檢索條件,中斷本次循環(huán),進(jìn)入下次循環(huán)。②若子孫節(jié)點(diǎn)包含檢索條件,則該節(jié)點(diǎn)顯示,并遞歸執(zhí)行2,找出該節(jié)點(diǎn)下需要顯示的子孫節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求4所述BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,其特征是所述步驟4)中,在篩選遍歷的同時(shí),把期望數(shù)據(jù)按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式。
全文摘要
一種BS結(jié)構(gòu)軟件中的動(dòng)態(tài)樹(shù)型結(jié)構(gòu)目錄檢索方法,包括步驟1)取出樹(shù)形節(jié)點(diǎn)信息;2)數(shù)據(jù)的緩存;3)判斷節(jié)點(diǎn)是否包含檢索項(xiàng);4)期望數(shù)據(jù)的結(jié)構(gòu)轉(zhuǎn)換;5)數(shù)據(jù)的交互;所述步驟4)中,把期望數(shù)據(jù)按照J(rèn)SON規(guī)范同步生成樹(shù)形目錄結(jié)構(gòu)需要的數(shù)據(jù)格式;所述步驟5)中,WEB頁(yè)面的后臺(tái)的處理內(nèi)容將期望的JSON格式數(shù)據(jù)及時(shí)通過(guò)預(yù)先設(shè)定的Ajax回調(diào)函數(shù)返回前臺(tái)WEB頁(yè)面,使用JavaScript內(nèi)置方法解析JSON格式數(shù)據(jù),生成期望數(shù)據(jù)的樹(shù)形結(jié)構(gòu)表現(xiàn)。
文檔編號(hào)G06F17/30GK102446221SQ201110434210
公開(kāi)日2012年5月9日 申請(qǐng)日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者華國(guó)棟, 孫力斌, 李智 申請(qǐng)人:南京聯(lián)創(chuàng)科技集團(tuán)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1