亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于JSP技術(shù)的網(wǎng)頁表格組件的設(shè)計(jì)與實(shí)現(xiàn)

        2017-09-26 08:32:37周江李月
        現(xiàn)代計(jì)算機(jī) 2017年21期
        關(guān)鍵詞:服務(wù)器端數(shù)據(jù)量表格

        周江,李月

        (廣東交通職業(yè)技術(shù)學(xué)院,廣州510650)

        一種基于JSP技術(shù)的網(wǎng)頁表格組件的設(shè)計(jì)與實(shí)現(xiàn)

        周江,李月

        (廣東交通職業(yè)技術(shù)學(xué)院,廣州510650)

        B/S信息系統(tǒng)中,表格的響應(yīng)時(shí)間直接影響系統(tǒng)響應(yīng)時(shí)間。通過對(duì)比并分析幾種主流表格組件的響應(yīng)時(shí)間并分析其原因,提出一種基于JSP技術(shù)的網(wǎng)頁表格組件的解決方案。該方案具有高效、輕量級(jí)的特點(diǎn),尤其在數(shù)據(jù)量較大時(shí)具有明顯的優(yōu)越性。

        表格;Web;組件;JSP

        1 開源表格組件的性能對(duì)比分析

        表格是B/S信息系統(tǒng)中常用的數(shù)據(jù)表現(xiàn)形式,它能一次顯示較多的信息,且方便查看,目前Ecside、Ex?tjs、Datatables等開源表格組件使用比較廣泛。按照實(shí)現(xiàn)方式來分類,可以將這些組件分為以下兩種:

        (1)在服務(wù)端構(gòu)造表格。此類組件在服務(wù)器端構(gòu)造好HTML代碼,輸出到瀏覽器,然后用JavaScript在客戶端進(jìn)行表格的樣式調(diào)整以及各種表格的事件綁定,代表性的組件有Ecside。

        (2)在客戶端構(gòu)造表格。原理是從服務(wù)端將數(shù)據(jù)傳回到客戶瀏覽器端,常見的格式是XML或者JSON,也有的使用自定義格式??蛻舳藢⒏袷交玫淖址跒g覽器進(jìn)行對(duì)象化,構(gòu)造出表格對(duì)象;然后,為表格的每行構(gòu)造一個(gè)對(duì)象,為每行的每個(gè)單元格構(gòu)造一個(gè)對(duì)象,為每個(gè)對(duì)象提供各種觸發(fā)事件綁定;之后,為表格、行、列提供HTML代碼創(chuàng)建函數(shù)(作為內(nèi)部方法放入各個(gè)對(duì)象);最后,從上至下,遍歷所有對(duì)象,創(chuàng)建表格的HTML代碼。典型代表有ExtJS組件以及Datata?bles組件。

        圖1是在不同數(shù)據(jù)量情況下幾種組件的性能分析對(duì)比。從圖中可以看出,當(dāng)數(shù)據(jù)量比較小,僅為20行× 10列時(shí),純Html表格的響應(yīng)時(shí)間僅4ms,Ecside、Ex?tJS、Datatables三種組件的響應(yīng)時(shí)間均為20ms左右;當(dāng)數(shù)據(jù)量上升到50行*20列時(shí),純Html表格的響應(yīng)時(shí)間依然只有6ms,而Ecside、ExtJS、Datatables的響應(yīng)時(shí)間則分別上升到了80ms、200m和180ms;當(dāng)數(shù)據(jù)量上升到200行×10列時(shí),純HTML表格的響應(yīng)時(shí)間只上升到40ms,而Ecside、ExtJS、Datatables的響應(yīng)時(shí)間則分別上升到了200ms、500m和400ms;當(dāng)數(shù)據(jù)量上升到200行×50列時(shí),Ecside組件的響應(yīng)時(shí)間也上升到了900ms,而ExtJS、Datatables的響應(yīng)時(shí)間則達(dá)到了4300ms和2000ms,此時(shí)純HTML表格的響應(yīng)時(shí)間僅有62ms。

        圖1 各種組件顯示不同數(shù)據(jù)量的效率對(duì)比

        一般認(rèn)為,一個(gè)網(wǎng)頁的響應(yīng)時(shí)間不能超過1000ms,如果一個(gè)表格組件顯示時(shí)間就超過1000ms,那么整個(gè)頁面響應(yīng)時(shí)間會(huì)進(jìn)一步加長,用戶體驗(yàn)將顯著下降。所以,在較大的數(shù)據(jù)量(200行×10列)情況下,幾種主流的開源網(wǎng)頁表格組件的響應(yīng)時(shí)間都非常不理想,這成為了制約B/S信息系統(tǒng)響應(yīng)時(shí)間的一個(gè)瓶頸。因此,開發(fā)一種高效率顯示大數(shù)據(jù)量的網(wǎng)頁表格組件,對(duì)滿足客戶需求而言是非常必須而迫切的。

        2 基于JSP技術(shù)的網(wǎng)頁表格組件的設(shè)計(jì)及實(shí)現(xiàn)

        2.1 網(wǎng)頁表格組件的設(shè)計(jì)思想

        分析圖1的數(shù)據(jù)及各種組件的技術(shù),可以得到如下結(jié)論:

        (1)純HTML表格在不同數(shù)據(jù)量下的響應(yīng)時(shí)間都是最快的,這是因?yàn)闉g覽器解析HTML代碼所用時(shí)間非常少,而Ecside等組件包含的Javascript代碼執(zhí)行起來比較費(fèi)時(shí),導(dǎo)致大量的時(shí)間耗費(fèi)在Javascript代碼執(zhí)行上。但是在實(shí)際軟件開發(fā)中,使用原生表格來開發(fā)界面,是不可行的。

        (2)隨著數(shù)據(jù)的增大,ExtJS和Datatables的表現(xiàn)非常糟糕,它們的耗時(shí)增長速度遠(yuǎn)高于線性。這是因?yàn)镋xtJS和Datatables在客戶端構(gòu)造HTML代碼,而且創(chuàng)建了大量js對(duì)象,導(dǎo)致頁面性能消耗很大,比如在數(shù)據(jù)量為200×50(行×列)的情況下,創(chuàng)建了10000個(gè)以上的對(duì)象,所以隨著數(shù)據(jù)的增加,響應(yīng)時(shí)間越來越長。

        (3)Ecside采用服務(wù)器端生成HTML代碼,所以Ecside耗時(shí)增長基本接近線性,明顯優(yōu)于ExtJS和Datatables。但是在200×50(行×列)的情況下依然超過1000ms,用戶體驗(yàn)也將顯著下降。造成Ecside耗時(shí)長的原因有兩點(diǎn)。其一,Ecside組件雖然是客戶端生成HTML代碼,但還是在客戶端構(gòu)造了大量JavaScript對(duì)象,另外對(duì)表格樣式調(diào)整、事件綁定等也消耗了很多時(shí)間。其二,由于Ecside是通用組件,考慮的表格通用功能非常多,例如可編輯、排序、拖動(dòng)、統(tǒng)計(jì)、導(dǎo)出、打印等各種通用功能集成,存在一定時(shí)間消耗,所以也在頁面顯示的效率方面打了折扣。

        通過比較分析,筆者吸取這幾種主流組件的精華,重新規(guī)劃,開發(fā)了一種全新的基于JSP技術(shù)的網(wǎng)頁表格組件,筆者將此組件取名為OgTable。

        OgTable組件實(shí)現(xiàn)的主要架構(gòu)如圖2所示。其主要設(shè)計(jì)思想有如下幾點(diǎn):

        (1)為了保證訪問的效率,采用服務(wù)端生成網(wǎng)頁表格HTML代碼的方式。雖然從軟件工程角度來看,從客戶端生成HTML代碼耦合度低、代碼可讀性高,可維護(hù)性強(qiáng),也更方便程序員使用,但是在必要的時(shí)候需要犧牲代碼結(jié)構(gòu)去獲取性能,是在軟件開發(fā)中經(jīng)常需要做的一個(gè)取舍。

        (2)采用JSP的Taglib的技術(shù),即自定義標(biāo)簽,便于封裝數(shù)據(jù)。

        (3)表格輸出以后,極端簡(jiǎn)化js代碼,后續(xù)操作需要的js對(duì)象在觸發(fā)事件以后根據(jù)需要再單獨(dú)生成,HT?ML中對(duì)象需要綁定的事件,全部在html代碼中生成,不采用js的方式綁定。

        (4)在OgTable實(shí)現(xiàn)過程中,去掉表格的大部分通用功能,只提供表格的基本功能。附加功能采用外置接口,由用戶選擇配置,盡量使OgTable組件輕量化。

        圖2 自定義的網(wǎng)頁表格組件(OgTable)原理圖

        2.2 OgTablee表格組件中客戶端的實(shí)現(xiàn)及效率提升

        OgTable包含基本的表格功能,如表頭固定功能、表格列寬調(diào)整功能、表格翻頁功能等,同時(shí)為了保證效率,從以下幾點(diǎn)來考慮實(shí)現(xiàn)的細(xì)節(jié):

        (1)表頭固定功能

        這是指表格滾動(dòng)條上下拉動(dòng)時(shí)表頭固定不動(dòng)。在數(shù)據(jù)量大,主要是行數(shù)比較多的時(shí)候,表頭固定功能就顯得特別重要。為了加快響應(yīng)速度,OgTable摒棄了一般的用JavaScript代碼捕捉鼠標(biāo)位置固定表頭的方法,而是將表格實(shí)際分為了兩個(gè)表格,上面的表格僅顯示表頭一行,下面的表格顯示數(shù)據(jù)。在表格初始化的時(shí)候用JavaScript代碼保證兩個(gè)表格所有的列都同寬,這樣可以達(dá)到表頭固定功能的效果。

        (2)表格列寬調(diào)整功能

        表格列寬調(diào)整功能,類似于Excel在表頭通過鼠標(biāo)拖動(dòng)改變列寬的功能,在鼠標(biāo)移動(dòng)到表頭,點(diǎn)擊左鍵以后,觸發(fā)JavaScript事件,改變鼠標(biāo)形狀,并且根據(jù)鼠標(biāo)的移動(dòng)位置調(diào)整列的寬度??紤]到效率問題,調(diào)整列寬并不是實(shí)時(shí)處理,而是等待鼠標(biāo)的左鍵釋放以后再調(diào)整。這種處理方式將對(duì)客戶端電腦配置較差的用戶提供一個(gè)較好的體驗(yàn)。

        (3)表格翻頁功能

        在OgTable組件中,表格翻頁功能采用AJAX技術(shù),通用的表格組件通常是使用AJAX獲取格式化的數(shù)據(jù)(XML或者JSON等其他格式)。同樣是考慮到客戶端重新封裝代碼的效率將比較低,所以O(shè)gTable將直接從服務(wù)器端獲取到封裝好的可以直接顯示為表格的HTML代碼,通過這種方式,節(jié)省了客戶端解析數(shù)據(jù)和構(gòu)造HTML代碼的時(shí)間,從而提高OgTable組件在數(shù)據(jù)量較大的時(shí)候的翻頁效率。

        2.3 OgTablee表格組件在服務(wù)器端的實(shí)現(xiàn)

        服務(wù)器端主體由OGTableTag(表格標(biāo)簽)、OGRowTag(行標(biāo)簽)、OGColumnTag(列標(biāo)簽)、OGAt?tributeTag(屬性標(biāo)簽)四個(gè)標(biāo)簽構(gòu)成,類圖如圖3所示:

        在圖3中,需要說明如下幾點(diǎn):

        (1)OGTableTag類、OGRowTag類、OGColumnTag類都繼承了OGBaseTag類,成為3個(gè)獨(dú)立的自定義標(biāo)簽類。這樣它們可以擁有自己的屬性方法。

        (2)在JSP中OGTableTag類是OGRowTag類的父節(jié)點(diǎn),OGRowTag類是OGColumnTag父親節(jié)點(diǎn)。所以在服務(wù)器端,OGTableTag類、OGRowTag類、OGColumn?Tag類存在依賴關(guān)系。

        (3)在Jsp中OGTableTag類、OGRowTag類、OG?ColumnTag類都有OGAttribute類的子節(jié)點(diǎn),便于給這三種Tag類添加各種屬性,所以在服務(wù)器端OGTable?Tag類、OGRowTag類、OGColumnTag類對(duì)OGAttribute類有依賴關(guān)系。

        (4)OGTableTag有各種節(jié)點(diǎn)html代碼的構(gòu)造方法,OGRowTag有行高,背景顏色等屬性,OGColumnTag有列寬,是否可排序,是否可以拖動(dòng)等屬性。

        (5)OGTableTag中的doEndTag方法(超類方法)中調(diào)用各層的構(gòu)造HTML代碼構(gòu)造方法,并拼裝起來,形成一個(gè)完整的表格代碼,用out.print輸出。doEndTag方法還會(huì)輸出一些js代碼用來完成table的腳本初始化。

        3 OgTable表格組件的性能測(cè)試及分析

        OgTable組件開發(fā)完畢后,將該組件在“校園問卷調(diào)查系統(tǒng)”、“學(xué)生醫(yī)療保險(xiǎn)信息系統(tǒng)”等中應(yīng)用,得到良好的效果。在相同場(chǎng)景下,將OgTable組件與Ec?side、ExtJS、Datatables等表格組件進(jìn)行了性能對(duì)比,得到結(jié)果如圖4所示。

        圖3 服務(wù)器端實(shí)現(xiàn)的類圖

        從圖4可以看出,在大數(shù)據(jù)量,即200×10(行×列)和200×50(行×列)時(shí),使用OgTable表格組件的響應(yīng)時(shí)間相對(duì)其他的幾種網(wǎng)頁組件有顯著降低,更接近純HTML表格的效率。因此,本文提出的基于JSP技術(shù)的網(wǎng)頁表格組件OgTable是符合實(shí)際需要并且切實(shí)有效的,解決了較大數(shù)據(jù)量用表格展示時(shí)響應(yīng)時(shí)間相對(duì)較慢的瓶頸。

        4 結(jié)語

        本文提出的基于JSP技術(shù)的OgTable表格組件的設(shè)計(jì)及實(shí)現(xiàn),使用了Taglib自定義標(biāo)簽技術(shù),在服務(wù)器端生成表格代碼,在前端去掉使用頻率低的通用功能,具有高效、輕量級(jí)的特點(diǎn)。在200行×10列以上數(shù)據(jù)量時(shí),和主流組件對(duì)比,具有明顯的優(yōu)越性。OgTable組件解決了在Web信息系統(tǒng)中,用表格顯示較大數(shù)據(jù)量時(shí)的響應(yīng)時(shí)間過長的問題。

        圖4 OgTable與開源組件性能對(duì)比

        [1]黃燈.ExtJS 4.2實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2014.

        [2]李華彪.Java中間件技術(shù)及其應(yīng)用開發(fā)[M].北京:中國水利水電出版社,2012.

        [3]鄧偉成,范軼翔,夏翔,等.ExtJS框架下Grid組件的擴(kuò)展及應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2012,32(S1):80-82.

        [4]戴麗華.嵌入式Web服務(wù)器的研究與應(yīng)用[J].輕工科技,2013(11):72-73.

        Design and Implementation of a Page form Component Based on JSP Technology

        ZHOU Jiang,LI Yue

        In the B/S information system,the response time of the table directly affects the system response time.By comparing several major table controls,propose a solution of developing a kind of table control used in pages,the solution is efficient and lightweight,especially when the data volume is large,and it has obvious superiority.

        1007-1423(2017)21-0048-04

        10.3969/j.issn.1007-1423.2017.21.010

        周江(1978-),女,湖南瀏陽人,碩士,研究方向?yàn)樾畔⑼ㄐ?、軟件工程;李月?979-),女,湖北荊門人,碩士,研究方向?yàn)檐浖こ獭⑷斯ぶ悄埽?/p>

        2017-07-06

        2017-07-16

        Table;Web;Component;JSP

        猜你喜歡
        服務(wù)器端數(shù)據(jù)量表格
        《現(xiàn)代臨床醫(yī)學(xué)》來稿表格要求
        基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
        計(jì)算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
        高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
        寬帶信號(hào)采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
        電子制作(2019年13期)2020-01-14 03:15:18
        統(tǒng)計(jì)表格的要求
        統(tǒng)計(jì)表格的要求
        統(tǒng)計(jì)表格的要求
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        在Windows中安裝OpenVPN
        国产亚洲精久久久久久无码| 日本免费一二三区在线| 国产a级毛片久久久精品毛片| 毛片大全真人在线| 中文亚洲爆乳av无码专区| 国产av区亚洲av毛片| 日韩人妻精品中文字幕专区| 天堂а√在线最新版中文在线 | av天堂手机一区在线| 色婷婷av一区二区三区久久| 精品深夜av无码一区二区| 久久青青草原亚洲AV无码麻豆| 一级a免费高清免在线| 人妖一区二区三区四区| 国产suv精品一区二区883 | av网站在线观看亚洲国产| av资源在线免费观看| 一边捏奶头一边高潮视频| 无码国产色欲xxxxx视频| 亚洲国产成人Av毛片大全| 久久91精品国产一区二区| 免费视频成人片在线观看| 日韩精品视频高清在线| 日韩女优av一区二区| 米奇影音777第四色| 狠狠干视频网站| 久久精品国产在热亚洲不卡| 久久人人爽爽爽人久久久| 日本www一道久久久免费榴莲| 久久久精品人妻一区二| 蜜桃视频在线观看免费亚洲| 亚洲国产一区二区a毛片| 亚洲—本道中文字幕久久66| 日本女同性恋一区二区三区网站| 精品国产乱码久久久久久郑州公司 | 国产麻豆精品久久一二三| 一本色道久久88—综合亚洲精品| 免费人妻无码不卡中文字幕18禁| 国产精品自产拍在线18禁| 日本高清一区二区在线播放| 欧美激情一区二区三区|