欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于ajax的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大文件的方法

文檔序號(hào):6576780閱讀:285來源:國知局
專利名稱:一種基于ajax的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大文件的方法
技術(shù)領(lǐng)域
本發(fā)明涉及AJAX網(wǎng)頁技術(shù),特別是涉及一種基于AJAX的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大 文件的方法。
背景技術(shù)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,傳統(tǒng)的動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)已經(jīng)為許多網(wǎng)頁制作人員所熟 悉,近年來,互聯(lián)網(wǎng)應(yīng)用程序(Rich Internet Application,簡稱RIA)開發(fā)模式的興起使 得互聯(lián)網(wǎng)用戶對(duì)網(wǎng)絡(luò)交互感受提出了更高的要求,傳統(tǒng)的技術(shù)已經(jīng)無法滿足RIA開發(fā)的需 要,而 AJAX (Asynchronous JavaScript and XML,簡稱 AJAX)開始成為主流的 RIA 開發(fā)模 式。AJAX 是一個(gè)結(jié)合了 DHTML 技術(shù)、XML (可擴(kuò)展標(biāo)記語言,extensible Markup Language) 以及JavaScript的編程技術(shù),是將幾項(xiàng)技術(shù)按一定的方式組合在一起在共同的協(xié)作中發(fā) 揮各自的作用。AJAX是使用客戶端腳本與網(wǎng)頁服務(wù)器交換數(shù)據(jù)的網(wǎng)頁應(yīng)用開發(fā)技術(shù)。這 樣,網(wǎng)頁不用打斷交互流程進(jìn)行重新加載,就可以動(dòng)態(tài)地更新。AJAX網(wǎng)頁的一個(gè)最大的特點(diǎn) 是無需刷新頁面便可向服務(wù)器傳輸或讀寫數(shù)據(jù)(又稱無刷新更新頁面)?,F(xiàn)在的動(dòng)態(tài)網(wǎng)頁開發(fā)在針對(duì)某些固定格式的數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫時(shí),一般采用兩 種方法一是通過網(wǎng)頁在服務(wù)器端直接打開數(shù)據(jù)文件,逐行按格式生成Sql語句,再插入到 數(shù)據(jù)庫相應(yīng)表中;二是單獨(dú)編寫一個(gè)服務(wù)器端的維護(hù)進(jìn)程,專門用來執(zhí)行數(shù)據(jù)文件的導(dǎo)入。 第一種方法涉及到數(shù)據(jù)文件的打開訪問和數(shù)據(jù)庫表的插入操作,若是數(shù)據(jù)文件和數(shù)據(jù)庫表 比較龐大時(shí),經(jīng)常會(huì)造成網(wǎng)頁超時(shí),并且在數(shù)據(jù)導(dǎo)入過程中用戶無法得知文件導(dǎo)入數(shù)據(jù)庫 的進(jìn)度;第二種方法需要編寫在服務(wù)器端運(yùn)行的應(yīng)用程序,具有一定的局限性?,F(xiàn)在的動(dòng)態(tài)網(wǎng)頁開發(fā)在針對(duì)數(shù)據(jù)庫導(dǎo)出某些固定格式的文件時(shí),一般采用通過網(wǎng) 頁在服務(wù)器端創(chuàng)建一個(gè)線程,于該線程中打開數(shù)據(jù)庫鏈接讀取數(shù)據(jù)庫記錄集并創(chuàng)建數(shù)據(jù)文 件,然后按照約定的數(shù)據(jù)格式循環(huán)寫文件,直至記錄集完結(jié)關(guān)閉文件和數(shù)據(jù)庫鏈接。但是當(dāng) 需求的數(shù)據(jù)量超過十萬、百萬以上時(shí),經(jīng)常會(huì)造成服務(wù)器不堪負(fù)荷網(wǎng)頁超時(shí)導(dǎo)致數(shù)據(jù)導(dǎo)出 的失敗,并且在數(shù)據(jù)導(dǎo)出過程中用戶無法得知導(dǎo)出的進(jìn)度,具有一定的局限性。

發(fā)明內(nèi)容
本發(fā)明的目的之一在于克服現(xiàn)有技術(shù)之不足,提供一種基于AJAX的網(wǎng)頁在線導(dǎo) 入大文件的方法,是采用AJAX技術(shù)和DHTML使得頁面可以局部刷新,并通過循環(huán)多次發(fā)送 短請(qǐng)求,以減輕服務(wù)器在處理訪問大文件以及插入數(shù)據(jù)庫的負(fù)擔(dān),能夠很好地改善網(wǎng)頁在 線導(dǎo)入大文件的不足。本發(fā)明的目的之二在于克服現(xiàn)有技術(shù)之不足,提供一種基于AJAX的網(wǎng)頁在線導(dǎo) 出大文件的方法,是采用AJAX技術(shù)和DHTML使得頁面可以局部刷新,并通過循環(huán)多次發(fā)送 短請(qǐng)求,以減輕服務(wù)器在查詢數(shù)據(jù)庫導(dǎo)出大量的數(shù)據(jù)時(shí)的負(fù)擔(dān),能夠很好地改善網(wǎng)頁在線 導(dǎo)出大文件的不足。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,包括如下步驟a.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定每次的最大 執(zhí)行記錄數(shù)為PAGESIZE,設(shè)定累計(jì)共執(zhí)行的記錄數(shù)為T0TALSIZE ;b.由客戶端向服務(wù)器端上傳文件;c.服務(wù)器端接收文件完畢后,向客戶端返回上傳完結(jié)標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的頁面框架;d.客戶端獲取上傳文件標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的頁面框架后,向服務(wù)器端異步發(fā)送導(dǎo) 入的請(qǐng)求;e.服務(wù)器端獲取請(qǐng)求后,打開由客戶端上傳的數(shù)據(jù)文件,跳過T0TALSIZE的行數(shù), 然后逐行按格式生成Sql語句插入至數(shù)據(jù)庫中,并設(shè)置本次執(zhí)行的記錄數(shù)為iExeRecord ;f.服務(wù)器端對(duì)本次執(zhí)行的記錄數(shù)進(jìn)行判斷,若是本次執(zhí)行的記錄數(shù)iExeRecord 等于PAGESIZE則繼續(xù)下一步驟,若是本次執(zhí)行的記錄數(shù)iExeRecord小于PAGESIZE轉(zhuǎn)至步 驟i ;g.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄數(shù) TOTALS IZE,并將累計(jì)的記錄數(shù)T0TALSIZE和標(biāo)識(shí)Continue返回給客戶端;h.客戶端接收標(biāo)識(shí)Continue時(shí),顯示出導(dǎo)入進(jìn)度的T0TALSIZE,并循環(huán)調(diào)用AJAX 對(duì)象,發(fā)送導(dǎo)入的請(qǐng)求,而后返回步驟e ;i.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄數(shù) TOTALS IZE,并將累計(jì)的記錄數(shù)T0TALSIZE和標(biāo)識(shí)Over返回給客戶端;j.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)入的總記錄數(shù)T0TALSIZE,并完成導(dǎo)入。所述的步驟e中,在生成Sql語句的時(shí)候,采用循環(huán)生成,中間用分號(hào)隔開,最后再 一次性執(zhí)行該Sql語句。所述的步驟e中,在實(shí)現(xiàn)跳過T0TALSIZE的行數(shù)時(shí),是采用記錄文件訪問位置指針 的方式來實(shí)現(xiàn)。所述的步驟d中,頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器端發(fā)送參數(shù), 以及由該對(duì)象產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象。當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù) 來執(zhí)行數(shù)據(jù)導(dǎo)入操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取 到由服務(wù)器端傳回的Xml數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù)。在客戶端的數(shù)據(jù)導(dǎo)入的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù) 導(dǎo)入的進(jìn)度。一種基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,包括如下步驟A.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定導(dǎo)出的數(shù)據(jù) 記錄總數(shù)為TotalSize,設(shè)定每頁的最大執(zhí)行記錄數(shù)為PageSize,總頁數(shù)為TotalPage,當(dāng) 前執(zhí)行的頁碼為CurPage,以及導(dǎo)出文件名為FileName ;B.由客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求;C.服務(wù)器端接收請(qǐng)求后,根據(jù)條件查詢記錄總數(shù)TotalSize,計(jì)算總頁數(shù) TotalPage,置當(dāng)前執(zhí)行的頁碼CurPage = 1,并創(chuàng)建數(shù)據(jù)文件FileName ;D.服務(wù)器端對(duì)當(dāng)前執(zhí)行的頁碼CurPage進(jìn)行判斷,當(dāng)CurPage < = TotalPage時(shí)繼續(xù)下一步驟,當(dāng)CurPage > TotalPage時(shí)轉(zhuǎn)至步驟H ;E.服務(wù)器端打開數(shù)據(jù)文件FileName,利用數(shù)據(jù)庫分頁算法查詢第CurPage頁的記 錄集,該記錄集的最大執(zhí)行記錄數(shù)為PageSize條,并按照預(yù)先約定的格式將記錄集的記錄 循環(huán)寫入數(shù)據(jù)文件FileName中;F.服務(wù)器端在該記錄集完結(jié)后,關(guān)閉數(shù)據(jù)文件和數(shù)據(jù)庫鏈接,對(duì)當(dāng)前 執(zhí)行的頁碼 CurPage進(jìn)行增1處理,并將參數(shù)TotalPage, CurPage和標(biāo)識(shí)Continue返回給客戶端;G.客戶端接收到標(biāo)識(shí)Continue時(shí),顯示導(dǎo)出進(jìn)度CurPage/TotalPage,并循環(huán)調(diào) 用Ajax對(duì)象,發(fā)送導(dǎo)出數(shù)據(jù)請(qǐng)求;而后返回步驟D ;H.服務(wù)器端生成導(dǎo)出的文件鏈接和標(biāo)識(shí)Over返回給客戶端;I.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)出的文件鏈接供用戶下載,并完成導(dǎo)出。所述的步驟C中,在查詢符合條件的查詢記錄總數(shù)TotalSize時(shí),采用調(diào)用數(shù)據(jù)庫 提供的計(jì)算記錄數(shù)的函數(shù)來得出結(jié)果。所述的步驟B和步驟G中,當(dāng)客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求時(shí),服務(wù)器端 會(huì)向客戶端返回?cái)?shù)據(jù)導(dǎo)出的頁面框架;該頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù) 器端發(fā)送參數(shù),以及由該對(duì)象產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象。當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù) 來執(zhí)行數(shù)據(jù)導(dǎo)出操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取 到傳回的Xml數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù)。在客戶端的數(shù)據(jù)導(dǎo)出的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù) 導(dǎo)出的進(jìn)度。本發(fā)明的有益效果是,由于采用了 AJAX技術(shù)和DHTML,使得頁面可以局部刷新,由 于采用了循環(huán)多次發(fā)送短請(qǐng)求的方式,能夠有效減輕服務(wù)器在處理訪問大文件以及插入數(shù) 據(jù)庫的負(fù)擔(dān)和查詢數(shù)據(jù)庫導(dǎo)出大量的數(shù)據(jù)時(shí)的負(fù)擔(dān),解決了現(xiàn)有技術(shù)中大文件通過網(wǎng)頁倒 入數(shù)據(jù)庫和大量數(shù)據(jù)通過網(wǎng)頁從數(shù)據(jù)庫導(dǎo)出時(shí)的超時(shí)問題,并避免了現(xiàn)有技術(shù)中后臺(tái)寫個(gè) 導(dǎo)入的應(yīng)用程序或服務(wù),必須要有能在服務(wù)器上安裝應(yīng)用程序的權(quán)限的局限性,達(dá)到了能 夠很好地改善網(wǎng)頁在線導(dǎo)入大文件的不足和改善網(wǎng)頁在線導(dǎo)出大文件的不足的目的。以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明;但本發(fā)明的一種基于AJAX 的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大文件的方法不局限于實(shí)施例。


圖1是實(shí)施例本發(fā)明的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的流程圖;圖2是實(shí)施例本發(fā)明的基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的流程圖。
具體實(shí)施例方式實(shí)施例,本發(fā)明實(shí)施例的網(wǎng)頁編程語言為Asp,數(shù)據(jù)庫采用SqlServerfOOO,操作 Microsoft Windows 2003Server。ASP是指動(dòng)態(tài)服務(wù)器主頁(Active server pags,簡稱ASP),內(nèi)含于 InternetInformation Server (IIS)當(dāng)中,提供——個(gè)月艮務(wù)器端(server-side)的 scripting 環(huán)境,讓你產(chǎn)生和執(zhí)行動(dòng)態(tài),交互式,高效率的站點(diǎn)服務(wù)器的應(yīng)用程序。服務(wù)器會(huì)自動(dòng)將Active Server Pages的程序代碼,解釋為標(biāo)準(zhǔn)HTML格式的主頁內(nèi)容,在送到用戶端的瀏 覽器上顯示出來。用戶端只要使用常規(guī)可執(zhí)行HTML碼的瀏覽器,即可瀏覽Active Server Pages所設(shè)計(jì)的主頁內(nèi)容。DHTML是指動(dòng)態(tài)HTML (Dynamic HTML,簡稱DHTML),其實(shí)并不是一門新的語言,它 只是HTML、CSS和客戶端腳本的一種集成。DHTML建立在原有的技術(shù)的基礎(chǔ)上,可分為三個(gè) 方面第一方面HTML,也就是頁面中的各種頁面元素對(duì)象,它們是被動(dòng)態(tài)操縱的內(nèi)容;第二方面CSS,CSS屬性也就是動(dòng)態(tài)操縱的內(nèi)容,從而獲得動(dòng)態(tài)的格式效果;第三方面客戶端腳本(例如JavaScript),它實(shí)際操縱Web頁面上的HTML和CSS。JavaScript是一種嵌入或調(diào)入到標(biāo)準(zhǔn)的網(wǎng)頁Html代碼中的,可在瀏覽器客戶端 運(yùn)行的,基于對(duì)象和事件驅(qū)動(dòng)并具有安全性能的一種用于開發(fā)動(dòng)態(tài)網(wǎng)頁的編程語言。有了 JavaScript,可使得網(wǎng)頁變得生動(dòng)。使用它的目的是與HTML超文本標(biāo)識(shí)語言、Java或Vb腳 本語言一起實(shí)現(xiàn)在一個(gè)網(wǎng)頁中鏈接多個(gè)對(duì)象,與網(wǎng)絡(luò)客戶交互使用,從而可以開發(fā)客戶端 的應(yīng)用程序。
XmlHttpRequest為可在JavaScript中創(chuàng)建的客戶端ActiveX對(duì)象,該對(duì)象在 Internet Explorerf中首次引入,是一種支持異步請(qǐng)求的技術(shù)。使用該對(duì)象可向服務(wù)器發(fā)起 請(qǐng)求,并處理請(qǐng)求來獲取數(shù)據(jù),而不阻塞用戶。Ajax 是 Asynchronous JavaScript and XML (異步 JavaScript 禾口 XML)的縮寫, 是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù),使用了客戶端腳本與Web服務(wù)器交換數(shù)據(jù) 的Web應(yīng)用開發(fā)方法,其中主要使用了 XmlHttpRequest對(duì)象。使用Ajax可以使得Web頁 面不用打斷交互流程進(jìn)行重新加載,就可以動(dòng)態(tài)地更新,用戶可以創(chuàng)建接近本地桌面應(yīng)用 的直接、高可用、更豐富、更動(dòng)態(tài)的Web用戶界面。Ajax提供與服務(wù)器異步通信的能力,從而使用戶從請(qǐng)求/響應(yīng)的循環(huán)中解脫出 來。借助于Ajax,可以在用戶單擊按鈕或或鏈接時(shí),使用JavaScript和DHTML立即更新用 戶界面,并向服務(wù)器發(fā)出異步請(qǐng)求,以執(zhí)行更新或查詢數(shù)據(jù)庫。當(dāng)請(qǐng)求返回時(shí),就可以使用 JavaScript和CSS來相應(yīng)地更新用戶界面,而不是刷新整個(gè)頁面。XML是extensible Markup Language (可擴(kuò)展標(biāo)記語言)的縮寫。XML是一種簡 單的數(shù)據(jù)存儲(chǔ)語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),簡單來說就是一種描述數(shù)據(jù)結(jié)構(gòu)的 格式。參見圖1所示,本發(fā)明的一種基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,包括如下 步驟步驟a.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定每次的 最大執(zhí)行記錄數(shù)為PAGESIZE,設(shè)定累計(jì)共執(zhí)行的記錄數(shù)為T0TALSIZE ;步驟b.由客戶端向服務(wù)器端上傳文件;步驟c.服務(wù)器端接收文件完畢后,向客戶端返回上傳完結(jié)標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的 頁面框架;步驟d.客戶端獲取上傳文件標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的頁面框架后,向服務(wù)器端異步 發(fā)送導(dǎo)入的請(qǐng)求;步驟e.服務(wù)器端獲取請(qǐng)求后,打開由客戶端上傳的數(shù)據(jù)文件,跳過T0TALSIZE的行數(shù),然后逐行按格式生成Sql語句插入至數(shù)據(jù)庫中,并設(shè)置本次執(zhí)行的記錄數(shù)為 iExeRecord ;步驟f.服務(wù)器端對(duì)本次執(zhí)行的記錄數(shù)進(jìn)行判斷,若是本次執(zhí)行的記錄數(shù) iExeRecord等于PAGESIZE則繼續(xù)下一步驟,若是本次執(zhí)行的記錄數(shù)iExeRecord小于 PAGES IZE轉(zhuǎn)至步驟i ;步驟g.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄數(shù)T0TALSIZE,并將累計(jì)的記錄數(shù)T0TALSIZE和標(biāo)識(shí)Continue返回給客戶端;步驟h.客戶端接收標(biāo)識(shí)Continue時(shí),顯示出導(dǎo)入進(jìn)度的T0TALSIZE,并循環(huán)調(diào)用 AJAX對(duì)象,發(fā)送導(dǎo)入的請(qǐng)求,而后返回步驟e ;步驟i.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄 數(shù)T0TALSIZE,并將累計(jì)的記錄數(shù)T0TALSIZE和標(biāo)識(shí)Over返回給客戶端;步驟j.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)入的總記錄數(shù)T0TALSIZE,并完成導(dǎo)入。其中所述的步驟e中,在生成Sql語句的時(shí)候,采用循環(huán)生成,中間用分號(hào)隔開,最后再 一次性執(zhí)行該Sql語句;所述的步驟e中,在實(shí)現(xiàn)跳過T0TALSIZE的行數(shù)時(shí),是采用記錄文件訪問位置指針 的方式來實(shí)現(xiàn);所述的步驟d中,頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器端發(fā)送參數(shù), 以及由該對(duì)象產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象;當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù) 來執(zhí)行數(shù)據(jù)導(dǎo)入操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取 到由服務(wù)器端傳回的Xml數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù);在客戶端的數(shù)據(jù)導(dǎo)入的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù) 導(dǎo)入的進(jìn)度。本發(fā)明的一種基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,由于系統(tǒng)是面向?qū)ο蟮?MVC模式(Model-View-Controller,模型-視圖-控制器)在Web開發(fā)中的應(yīng)用,Model表 示應(yīng)用的業(yè)務(wù)邏輯層,View是應(yīng)用的表示層面,Controller是提供應(yīng)用的處理過程控制。 通過這種MVC設(shè)計(jì)模式把應(yīng)用邏輯,處理過程和顯示邏輯劃分成不同的組件、模塊實(shí)現(xiàn),組 件間可以進(jìn)行交互和重用。本發(fā)明中,表示層專注于客戶端的顯示導(dǎo)入進(jìn)度,處理過程控制為頁面提供轉(zhuǎn)向 和數(shù)據(jù),控制層作為表示層和模型層之間的聯(lián)系;業(yè)務(wù)邏輯層是業(yè)務(wù)邏輯和數(shù)據(jù)的存儲(chǔ)和表不。步驟d中客戶端在獲取上傳文件標(biāo)識(shí)后,頁面將自動(dòng)通過Ajax技術(shù)來實(shí)現(xiàn)發(fā)送數(shù) 據(jù)導(dǎo)入的請(qǐng)求和參數(shù),頁面會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器發(fā)送參數(shù),以及由 該對(duì)象產(chǎn)生一個(gè)可以接收服務(wù)器傳遞過來數(shù)據(jù)的XmlDoc對(duì)象。當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器發(fā)送參數(shù)時(shí),服務(wù)器會(huì)根據(jù)參數(shù)來執(zhí) 行數(shù)據(jù)導(dǎo)入操作。服務(wù)器端打開數(shù)據(jù)文件是采用ASP的FS0(File SystemOb ject)對(duì)象模型 的FileSystemObject對(duì)象來對(duì)文件系統(tǒng)進(jìn)行訪問處理,在此我們使用FileSystemObject 對(duì)象的OpenTextFile方法來打開指定的數(shù)據(jù)文件。如果是第一次打開數(shù)據(jù)文件,那么TOTALSIZE等于0,此時(shí)調(diào)用ReadLine方法來循環(huán)讀取數(shù)據(jù)文件的行;否則應(yīng)先使用了 While循環(huán)+SkipLine方法的方式來跳過已經(jīng)處理過的行數(shù),之后調(diào)用ReadLine方法來循 環(huán)讀取數(shù)據(jù),直至達(dá)到PAGESIZE限制。在讀取行數(shù)據(jù)的同時(shí),可以增加對(duì)該行數(shù)據(jù)的驗(yàn)證。參見圖2所示,本發(fā)明的一種基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,包括如下步驟步驟A.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定 導(dǎo)出的數(shù)據(jù)記錄總數(shù)為TotalSize,設(shè)定每頁的最大執(zhí)行記錄數(shù)為PageSize,總頁數(shù)為 TotalPage,當(dāng)前執(zhí)行的頁碼為CurPage,以及導(dǎo)出文件名為FileName ;步驟B.由客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求;步驟C.服務(wù)器端接收請(qǐng)求后,根據(jù)條件查詢記錄總數(shù)TotalSize,計(jì)算總頁數(shù) TotalPage,置當(dāng)前執(zhí)行的頁碼CurPage = 1,并創(chuàng)建數(shù)據(jù)文件FileName ;步驟D.服務(wù)器端對(duì)當(dāng)前執(zhí)行的頁碼CurPage進(jìn)行判斷,當(dāng)CurPage < = TotalPage時(shí)繼續(xù)下一步驟,當(dāng)CurPage > TotalPage時(shí)轉(zhuǎn)至步驟H ;步驟E.服務(wù)器端打開數(shù)據(jù)文件FileName,利用數(shù)據(jù)庫分頁算法查詢第CurPage頁 的記錄集,該記錄集的最大執(zhí)行記錄數(shù)為PageSize條,并按照預(yù)先約定的格式將記錄集的 記錄循環(huán)寫入數(shù)據(jù)文件FileName中;步驟F.服務(wù)器端在該記錄集完結(jié)后,關(guān)閉數(shù)據(jù)文件和數(shù)據(jù)庫鏈接,對(duì)當(dāng)前執(zhí)行的 頁碼CurPage進(jìn)行增1處理,并將參數(shù)TotalPage、CurPage和標(biāo)識(shí)Continue返回給客戶 端;步驟G.客戶端接收到標(biāo)識(shí)Continue時(shí),顯示導(dǎo)出進(jìn)度CurPage/TotalPage,并循 環(huán)調(diào)用Ajax對(duì)象,發(fā)送導(dǎo)出數(shù)據(jù)請(qǐng)求;而后返回步驟D ;步驟H.服務(wù)器端生成導(dǎo)出的文件鏈接和標(biāo)識(shí)Over返回給客戶端;步驟I.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)出的文件鏈接供用戶下載,并完成導(dǎo)
出ο其中所述的步驟C中,在查詢符合條件的查詢記錄總數(shù)TotalSize時(shí),采用調(diào)用數(shù)據(jù)庫 提供的計(jì)算記錄數(shù)的函數(shù)來得出結(jié)果;所述的步驟B和步驟G中,當(dāng)客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求時(shí),服務(wù)器端 會(huì)向客戶端返回?cái)?shù)據(jù)導(dǎo)出的頁面框架;該頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù) 器端發(fā)送參數(shù),以及由該對(duì)象產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象;當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù) 來執(zhí)行數(shù)據(jù)導(dǎo)出操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取 到傳回的Xml數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù);在客戶端的數(shù)據(jù)導(dǎo)出的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù) 導(dǎo)出的進(jìn)度。本發(fā)明的一種基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,由于系統(tǒng)是面向?qū)ο蟮?MVC模式(Model-View-Controller,模型-視圖-控制器)在Web開發(fā)中的應(yīng)用,Model表 示應(yīng)用的業(yè)務(wù)邏輯層,View是應(yīng)用的表示層面,Controller是提供應(yīng)用的處理過程控制。 通過這種MVC設(shè)計(jì)模式把應(yīng)用邏輯,處理過程和顯示邏輯劃分成不同的組件、模塊實(shí)現(xiàn),組件間可以進(jìn)行交互和重用。本發(fā)明中,表示層專注于客戶端的顯示導(dǎo)出進(jìn)度,處理過程控制為頁面提供轉(zhuǎn)向 和數(shù)據(jù),控制層作為表示層和模型層之間的聯(lián)系;業(yè)務(wù)邏輯層是業(yè)務(wù)邏輯和數(shù)據(jù)的存儲(chǔ)和表不。步驟B和步驟G中客戶端在發(fā)送導(dǎo)出數(shù)據(jù)請(qǐng)求時(shí),頁面將自動(dòng)通過Ajax技術(shù)來 實(shí)現(xiàn)發(fā)送數(shù)據(jù)導(dǎo)出的請(qǐng)求和參數(shù),頁面會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器發(fā)送參 數(shù),以及由該對(duì)象產(chǎn)生一個(gè)可以接收服務(wù)器傳遞過來數(shù)據(jù)的XmlDoc對(duì)象。當(dāng)頁面通過XmlHttpRequest對(duì)象向服務(wù)器發(fā)送參數(shù)時(shí),服務(wù)器會(huì)根據(jù)參數(shù)來 查詢數(shù)據(jù)庫,首先獲取根據(jù)條件的數(shù)據(jù)記錄總數(shù)目T0TALSIZE,計(jì)算總頁數(shù)TotalPage, 然后每次只處理1頁,即每次只處理記錄數(shù)PageSize。服務(wù)器端創(chuàng)建數(shù)據(jù)文件是采用 ASP的FS0(File System Object)對(duì)象模型的FileSystemObject對(duì)象來對(duì)文件系統(tǒng)進(jìn) 行訪問處理,在此我們使用FiIeSystemOb ject對(duì)象的OpenTextFiIe方法來打開數(shù)據(jù)文 件(當(dāng)該文件不存在時(shí)先創(chuàng)建)。查詢數(shù)據(jù)庫時(shí)每次只查詢PageSize的記錄,循環(huán)調(diào)用 Write或是WriteLine方法來寫入數(shù)據(jù)文件直至達(dá)到PageSize限制。關(guān)閉數(shù)據(jù)庫連接和 FileSystemObject對(duì)象,釋放系統(tǒng)資源。
當(dāng)數(shù)據(jù)完全處理完畢時(shí),客戶端應(yīng)顯示該數(shù)據(jù)文件的鏈接,以供用戶訪問下載。另外,若是生成的文件格式為Excel文件時(shí),應(yīng)考慮Xls文件每個(gè)工作表Sheet存 在65000條記錄的限制,可以考慮分多個(gè)工作表或是多個(gè)文件存放。上述實(shí)施例僅用來進(jìn)一步說明本發(fā)明的一種基于AJAX的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大 文件的方法,但本發(fā)明并不局限于實(shí)施例,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作 的任何簡單修改、等同變化與修飾,均落入本發(fā)明技術(shù)方案的保護(hù)范圍內(nèi)。
權(quán)利要求
一種基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于包括如下步驟a.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定每次的最大執(zhí)行記錄數(shù)為PAGESIZE,設(shè)定累計(jì)共執(zhí)行的記錄數(shù)為TOTALSIZE;b.由客戶端向服務(wù)器端上傳文件;c.服務(wù)器端接收文件完畢后,向客戶端返回上傳完結(jié)標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的頁面框架;d.客戶端獲取上傳文件標(biāo)識(shí)以及數(shù)據(jù)導(dǎo)入的頁面框架后,向服務(wù)器端異步發(fā)送導(dǎo)入的請(qǐng)求;e.服務(wù)器端獲取請(qǐng)求后,打開由客戶端上傳的數(shù)據(jù)文件,跳過TOTALSIZE的行數(shù),然后逐行按格式生成Sql語句插入至數(shù)據(jù)庫中,并設(shè)置本次執(zhí)行的記錄數(shù)為iExeRecord;f.服務(wù)器端對(duì)本次執(zhí)行的記錄數(shù)進(jìn)行判斷,若是本次執(zhí)行的記錄數(shù)iExeRecord等于PAGESIZE則繼續(xù)下一步驟,若是本次執(zhí)行的記錄數(shù)iExeRecord小于PAGESIZE轉(zhuǎn)至步驟i;g.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄數(shù)TOTALSIZE,并將累計(jì)的記錄數(shù)TOTALSIZE和標(biāo)識(shí)Continue返回給客戶端;h.客戶端接收標(biāo)識(shí)Continue時(shí),顯示出導(dǎo)入進(jìn)度的TOTALSIZE,并循環(huán)調(diào)用AJAX對(duì)象,發(fā)送導(dǎo)入的請(qǐng)求,而后返回步驟e;i.服務(wù)器端停止插入并關(guān)閉數(shù)據(jù)文件以及數(shù)據(jù)庫連接,累計(jì)共執(zhí)行的記錄數(shù)TOTALSIZE,并將累計(jì)的記錄數(shù)TOTALSIZE和標(biāo)識(shí)Over返回給客戶端;j.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)入的總記錄數(shù)TOTALSIZE,并完成導(dǎo)入。
2.根據(jù)權(quán)利要求1所述的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于所述 的步驟e中,在生成Sql語句的時(shí)候,采用循環(huán)生成,中間用分號(hào)隔開,最后再一次性執(zhí)行該 Sql語句。
3.根據(jù)權(quán)利要求1所述的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于所述 的步驟e中,在實(shí)現(xiàn)跳過TOTALSIZE的行數(shù)時(shí),是采用記錄文件訪問位置指針的方式來實(shí) 現(xiàn)。
4.根據(jù)權(quán)利要求1所述的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于所述 的步驟d中,頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器端發(fā)送參數(shù),以及由該對(duì)象 產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象。
5.根據(jù)權(quán)利要求4所述的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于當(dāng)頁 面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù)來執(zhí)行數(shù)據(jù)導(dǎo) 入操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取到由服務(wù)器端 傳回的Xml數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的基于AJAX的網(wǎng)頁在線導(dǎo)入大文件的方法,其特征在于在客 戶端的數(shù)據(jù)導(dǎo)入的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù)導(dǎo)入的進(jìn)度。
7.一種基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,其特征在于包括如下步驟A.在服務(wù)器端與客戶端之間約定服務(wù)器端的全局Session變量設(shè)定導(dǎo)出的數(shù)據(jù)記錄 總數(shù)為TotalSize,設(shè)定每頁的最大執(zhí)行記錄數(shù)為PageSize,總頁數(shù)為TotalPage,當(dāng)前執(zhí) 行的頁碼為CurPage,以及導(dǎo)出文件名為FileName ;B.由客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求;C.服務(wù)器端接收請(qǐng)求后,根據(jù)條件查詢記錄總數(shù)TotalSize,計(jì)算總頁數(shù)TotalPage,置當(dāng)前執(zhí)行的頁碼CurPage = 1,并創(chuàng)建數(shù)據(jù)文件FileName ;D.服務(wù)器端對(duì)當(dāng)前執(zhí)行的頁碼CurPage進(jìn)行判斷,當(dāng)CurPage<= TotalPage時(shí)繼續(xù) 下一步驟,當(dāng)CurPage > TotalPage時(shí)轉(zhuǎn)至步驟H ;E.服務(wù)器端打開數(shù)據(jù)文件FileName,利用數(shù)據(jù)庫分頁算法查詢第CurPage頁的記錄 集,該記錄集的最大執(zhí)行記錄數(shù)為PageSize條,并按照預(yù)先約定的格式將記錄集的記錄循 環(huán)寫入數(shù)據(jù)文件FileName中;F.服務(wù)器端在該記錄集完結(jié)后,關(guān)閉數(shù)據(jù)文件和數(shù)據(jù)庫鏈接,對(duì)當(dāng)前執(zhí)行的頁碼 CurPage進(jìn)行增1處理,并將參數(shù)TotalPage, CurPage和標(biāo)識(shí)Continue返回給客戶端;G.客戶端接收到標(biāo)識(shí)Continue時(shí),顯示導(dǎo)出進(jìn)度CurPage/TotalPage,并循環(huán)調(diào)用 Ajax對(duì)象,發(fā)送導(dǎo)出數(shù)據(jù)請(qǐng)求;而后返回步驟D ;H.服務(wù)器端生成導(dǎo)出的文件鏈接和標(biāo)識(shí)Over返回給客戶端;I.客戶端接收到標(biāo)識(shí)Over時(shí),顯示導(dǎo)出的文件鏈接供用戶下載,并完成導(dǎo)出。
8.根據(jù)權(quán)利要求7所述的基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,其特征在于所述 的步驟C中,在查詢符合條件的查詢記錄總數(shù)TotalSize時(shí),采用調(diào)用數(shù)據(jù)庫提供的計(jì)算記 錄數(shù)的函數(shù)來得出結(jié)果。
9.根據(jù)權(quán)利要求7所述的基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,其特征在于所述 的步驟B和步驟G中,當(dāng)客戶端向服務(wù)器端發(fā)送導(dǎo)出數(shù)據(jù)的請(qǐng)求時(shí),服務(wù)器端會(huì)向客戶端 返回?cái)?shù)據(jù)導(dǎo)出的頁面框架;該頁面將會(huì)創(chuàng)建一個(gè)XmlHttpRequest對(duì)象,向服務(wù)器端發(fā)送參 數(shù),以及由該對(duì)象產(chǎn)生一個(gè)接收服務(wù)器端傳遞過來的數(shù)據(jù)的XmlDoc對(duì)象。
10.根據(jù)權(quán)利要求9所述的基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,其特征在于當(dāng) 頁面通過XmlHttpRequest對(duì)象向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端會(huì)根據(jù)參數(shù)來執(zhí)行數(shù)據(jù) 導(dǎo)出操作;并將數(shù)據(jù)轉(zhuǎn)換為Xml格式的數(shù)據(jù)再傳遞回頁面,頁面將會(huì)自動(dòng)獲取到傳回的Xml 數(shù)據(jù)格式的數(shù)據(jù),然后通過Dom來解析Xml數(shù)據(jù)。
11.根據(jù)權(quán)利要求7所述的基于AJAX的網(wǎng)頁在線導(dǎo)出大文件的方法,其特征在于在 客戶端的數(shù)據(jù)導(dǎo)出的頁面框架中采用HTML標(biāo)簽和JavaScript來動(dòng)態(tài)顯示數(shù)據(jù)導(dǎo)出的進(jìn) 度。
全文摘要
本發(fā)明公開了一種基于AJAX的網(wǎng)頁在線導(dǎo)入/導(dǎo)出大文件的方法,是采用AJAX技術(shù)和DHTML,使得頁面可以局部刷新,同時(shí)采用了循環(huán)多次發(fā)送短請(qǐng)求的方式,以能夠有效減輕服務(wù)器在處理訪問大文件以及插入數(shù)據(jù)庫的負(fù)擔(dān)和查詢數(shù)據(jù)庫導(dǎo)出大量的數(shù)據(jù)時(shí)的負(fù)擔(dān),解決了現(xiàn)有技術(shù)中大文件通過網(wǎng)頁倒入數(shù)據(jù)庫和大量數(shù)據(jù)通過網(wǎng)頁從數(shù)據(jù)庫導(dǎo)出時(shí)的超時(shí)問題,并避免了現(xiàn)有技術(shù)中后臺(tái)寫個(gè)導(dǎo)入的應(yīng)用程序或服務(wù),必須要有能在服務(wù)器上安裝應(yīng)用程序的權(quán)限的局限性,達(dá)到了能夠很好地改善網(wǎng)頁在線導(dǎo)入大文件的不足和改善網(wǎng)頁在線導(dǎo)出大文件的不足的目的。
文檔編號(hào)G06F17/30GK101826085SQ20091011312
公開日2010年9月8日 申請(qǐng)日期2009年12月30日 優(yōu)先權(quán)日2009年12月30日
發(fā)明者張雪峰, 章正道, 郭建輝 申請(qǐng)人:廈門市美亞柏科信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
琼海市| 澄城县| 吉林省| 色达县| 佛冈县| 武隆县| 巴东县| 虹口区| 平邑县| 百色市| 邳州市| 将乐县| 乌拉特后旗| 若羌县| 民乐县| 香格里拉县| 土默特左旗| 万载县| 桃源县| 正定县| 来宾市| 大化| 晋城| 白玉县| 枣阳市| 永和县| 清镇市| 苏尼特右旗| 平阳县| 醴陵市| 肃北| 长子县| 永济市| 庐江县| 潼南县| 潞城市| 巩留县| 富裕县| 项城市| 武汉市| 天柱县|