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

        ?

        基于J2EE技術(shù)的SSH框架的改進(jìn)及應(yīng)用

        2012-12-31 00:00:00翟高粵
        計(jì)算機(jī)時(shí)代 2012年10期

        摘要: 針對(duì)SSH框架存在的問(wèn)題,運(yùn)用J2EE各種成熟框架與技術(shù)對(duì)SSH框架進(jìn)行集成和擴(kuò)展,將改進(jìn)后的SSH框架應(yīng)用在籃球俱樂(lè)部項(xiàng)目的開(kāi)發(fā)和維護(hù)中,降低了開(kāi)發(fā)的復(fù)雜性,使開(kāi)發(fā)變得簡(jiǎn)便和靈活,提高了軟件開(kāi)發(fā)和維護(hù)效率。

        關(guān)鍵詞: SSH框架; J2EE技術(shù); Web開(kāi)發(fā); 籃球俱樂(lè)部

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2012)10-24-03

        引言

        目前,Java Web輕量級(jí)開(kāi)發(fā)的主流技術(shù)是SSH(Struts+Spring+Hibernate)框架。但隨著軟件開(kāi)發(fā)技術(shù)的快速發(fā)展,SSH框架表現(xiàn)出安全性、開(kāi)發(fā)過(guò)程復(fù)雜、功能不夠齊全的問(wèn)題,因此,對(duì)SSH框架進(jìn)行補(bǔ)充和改進(jìn)是必要的。

        針對(duì)SSH框架存在的問(wèn)題,運(yùn)用各種成熟框架與技術(shù)對(duì)SSH框架進(jìn)行集成和擴(kuò)展,實(shí)踐證明,在項(xiàng)目的開(kāi)發(fā)過(guò)程中應(yīng)用改進(jìn)后的SSH框架,使開(kāi)發(fā)的效率顯著提高,系統(tǒng)的可靠性、可擴(kuò)展性和可維護(hù)性等各種性能也明顯提升。

        1 成熟框架和通用技術(shù)簡(jiǎn)介

        1.1 常用框架技術(shù)

        1.1.1 SSH框架

        SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開(kāi)發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,利用Hibernate框架對(duì)持久層提供支持,業(yè)務(wù)層用Spring支持。具體做法是:用面向?qū)ο蟮姆治龇椒ǜ鶕?jù)需求提出一些模型,將這些模型實(shí)現(xiàn)為基本的Java對(duì)象,然后編寫基本的DAO接口,并給出Hibernate的DAO實(shí)現(xiàn),采用Hibernate架構(gòu)實(shí)現(xiàn)的DAO類來(lái)實(shí)現(xiàn)Java類與數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換和訪問(wèn),最后由Spring完成業(yè)務(wù)邏輯。SSH集成框架與技術(shù)結(jié)構(gòu)如圖1所示。

        Compass是基于Lucene之上的,是第一個(gè)實(shí)現(xiàn)Java的開(kāi)源搜索引擎框架[1]。Compass封裝了對(duì)全文檢索引擎lucene的操作,并且提供了Spring/Hibernate的應(yīng)用層框架,讓用戶可以不必深入了解lucene,輕松地在自己的Spring/Hibernate架構(gòu)的Web應(yīng)用當(dāng)中集成全文檢索功能。Hibernate可直接操作數(shù)據(jù)庫(kù),當(dāng)數(shù)據(jù)發(fā)生改變時(shí),可以通過(guò)Compass的OSEM對(duì)數(shù)據(jù)索引進(jìn)行更新。

        1.1.3 Spring MVC框架

        Spring MVC框架采用前端控制模式(Front Controller),它是Spring MVC請(qǐng)求中樞,其核心是DispatcherServlet。Spring MVC的所有請(qǐng)求通過(guò)它轉(zhuǎn)發(fā)到不同的處理器(Colltroller)處理,處理完后返回一個(gè)Model And View對(duì)象。DispatcherServlet查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到Model And View對(duì)象指定的視圖對(duì)象,視圖對(duì)象負(fù)責(zé)渲染返回給客戶端。

        1.1.4 SWF(Spring Web Flow)框架

        Spring Web Flow是Spring框架提供的構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVC架構(gòu),可以選擇是使用內(nèi)置的Spring Web框架還是Struts這樣的Web框架。通過(guò)策略接口,Spring框架是高度可配置的,而且包含多種視圖技術(shù),例如JavaServer Pages(JSP)技術(shù)、Velocity、Tiles、iText和POI。Spring MVC分離了控制器、模型對(duì)象、分派器以及處理程序?qū)ο蟮慕巧?,這種分離讓它們更容易進(jìn)行定制。因此,它的出現(xiàn)極大地提高了編程效率,尤其適合需要復(fù)雜用戶交互界面的Web應(yīng)用程序[2]。

        1.1.5 DWR框架

        DWR(Direct Web Remoting)是一個(gè)開(kāi)源項(xiàng)目,是基于Java的Ajax實(shí)現(xiàn)。它包含服務(wù)器端 Java 庫(kù)、一個(gè)DWR Servlet以及JavaScript庫(kù)。DWR的主要特點(diǎn)是能夠?qū)⒎?wù)器所寫的Java類直接轉(zhuǎn)化為Javascript中所引用的對(duì)象,簡(jiǎn)化了Javascript中的轉(zhuǎn)化操作[3]。

        1.2 通用技術(shù)介紹

        1.2.1 Ajax技術(shù)

        AJAX(A synchronous JavaScript and XML)實(shí)際上是幾項(xiàng)技術(shù)按一定的方式組合, 在共同的協(xié)作中發(fā)揮各自作用的技術(shù)[4]。Ajax具有改善B/S模式下交互、帶寬性能等優(yōu)點(diǎn)。Ajax的核心是JavaScript對(duì)象XmlHttpRequest。另外,Ajax為SSH提供了一種高效的數(shù)據(jù)傳輸方式,其常用的數(shù)據(jù)組織方式有JSON(JavaScript Object Notation)。在Ajax的應(yīng)用中,通過(guò)JSON組織傳輸大塊數(shù)據(jù),優(yōu)勢(shì)明顯。

        1.2.2 表單及時(shí)驗(yàn)證器

        表單驗(yàn)證器是表單的一種驗(yàn)證方式,當(dāng)表單提交時(shí),通過(guò)它能提高接收數(shù)據(jù)的有效性,因此被廣泛地應(yīng)用于各種Web應(yīng)用程序中。表單驗(yàn)證結(jié)合Ajax技術(shù)能發(fā)揮出實(shí)時(shí)高效的驗(yàn)證功能。

        1.2.3 任務(wù)動(dòng)態(tài)調(diào)度(Quartz)

        Quartz是Web應(yīng)用開(kāi)發(fā)中廣泛使用的任務(wù)調(diào)度解決方案,它提供的強(qiáng)大任務(wù)調(diào)度機(jī)制允許開(kāi)發(fā)人員靈活地定義觸發(fā)器等調(diào)度事件表。另外,Quartz提供了可持久化的調(diào)度運(yùn)行環(huán)境機(jī)制,在需要時(shí)可以保存并恢復(fù)調(diào)度現(xiàn)場(chǎng)。

        1.2.4 事件編程

        基于事件的編程是一種優(yōu)秀的編程方法,是符合人類思考的和行為的一種方法。在以往的面向過(guò)程的編程(C語(yǔ)言)中,程序運(yùn)行是面向過(guò)程的,也就是說(shuō)是人去遷就機(jī)器,去適應(yīng)機(jī)器,而事件編程是面向?qū)ο蟮木幊谭椒?,都是按?duì)象來(lái)編程,面向事件編程更能體現(xiàn)事件驅(qū)動(dòng)的特點(diǎn),因?yàn)槿魏蝿?dòng)作的進(jìn)行都是在事件的驅(qū)動(dòng)下進(jìn)行。擴(kuò)展框架中的事件編程主要通過(guò)Spring 內(nèi)部提供的事件處理機(jī)制來(lái)實(shí)現(xiàn)。

        1.2.5 郵件模板技術(shù)Velocity

        發(fā)送郵件功能是現(xiàn)在企業(yè)級(jí)應(yīng)用的最普遍的需求之一。通常HTML格式的郵件大部分的HTML代碼都是固定的,只有少部分是變動(dòng)的,因此非常適合采用模板技術(shù)來(lái)解決,達(dá)到設(shè)計(jì)與數(shù)據(jù)分離。

        Velocity是開(kāi)源的、應(yīng)用非常廣泛的郵件模板框架。其原理是用動(dòng)態(tài)的數(shù)據(jù)替換模板的特殊標(biāo)簽[5]。通過(guò)工具類VeloeityEngineUtils和VeloeityEngine,可以將Veloeity模板和數(shù)據(jù)整合后方便地返回郵件內(nèi)容和標(biāo)題。

        1.2.6 控制安全權(quán)限

        對(duì)于任何一個(gè)完整的應(yīng)用系統(tǒng),完善的認(rèn)證和授權(quán)機(jī)制是不可缺少的。Spring Security就是這樣的一個(gè)安全框架,它能為J2EE企業(yè)應(yīng)用提供強(qiáng)大而靈活的安全訪問(wèn)控制解決。通過(guò)在Spring容器中配置一組Bean,充分利用Spring的IOC和AOP功能,提供聲明式安全訪問(wèn)控制功能。

        1.2.7 單元測(cè)試技術(shù)(Junit)

        單元測(cè)試是在軟件開(kāi)發(fā)過(guò)程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),在單元測(cè)試活動(dòng)中,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試。JUnit是一個(gè)開(kāi)放源代碼的優(yōu)秀Java測(cè)試框架,可對(duì)表示層、業(yè)務(wù)層、數(shù)據(jù)存儲(chǔ)層進(jìn)行單元測(cè)試,保證模塊的編制正確性。

        2 SSH框架的改進(jìn)

        由于傳統(tǒng)SSH開(kāi)發(fā)框架存在安全、開(kāi)發(fā)繁瑣、應(yīng)用不方便等問(wèn)題,SSH框架改造的目標(biāo)是提供一個(gè)設(shè)計(jì)靈活簡(jiǎn)便、權(quán)限安全便于設(shè)計(jì)實(shí)現(xiàn)、各層易測(cè)試、各層及各種集成技術(shù)松耦合的企業(yè)應(yīng)用框架。

        2.1 SSH框架改進(jìn)的目標(biāo)

        ⑴ 松藕合:是指集成的各層與各種技術(shù)框架耦合性低,相互獨(dú)立,可以根據(jù)業(yè)務(wù)需要有選擇的應(yīng)用。

        ⑵ 靈活簡(jiǎn)便:是指集成框架采用統(tǒng)一的Spring管理方式,配置簡(jiǎn)單、應(yīng)用方便。為軟件開(kāi)發(fā)中的常遇到問(wèn)題提供了解決方案,如:頁(yè)面流技術(shù)、Ajax數(shù)據(jù)組織方式、頁(yè)面驗(yàn)證器、郵件服務(wù)系統(tǒng)、后臺(tái)應(yīng)用程序的任務(wù)調(diào)度和事件驅(qū)動(dòng)框架等。

        ⑶ 權(quán)限安全易控:是指集成框架中全面采用Spring Security對(duì)權(quán)限和資源進(jìn)行控制。

        ⑷ 可測(cè)試性:是指為各層提供了測(cè)試方案。

        2.2 具體實(shí)現(xiàn)

        ⑴ 在數(shù)據(jù)存取層(Hibernate)增加了Compass存取數(shù)據(jù)。

        ⑵ 在MVC(Struts2)層,集成了Spring Web Flow開(kāi)發(fā)頁(yè)面流程;集成了Spring MVC;集成了Spring JSON View,用于Ajax操作組織數(shù)據(jù);集成了Spring Security控制安全權(quán)限;集成了Spring Test和Junit測(cè)試技術(shù),為各層設(shè)計(jì)了單元測(cè)試方案。

        ⑶ 設(shè)計(jì)并實(shí)現(xiàn)了基于DWR的及時(shí)驗(yàn)證器;設(shè)計(jì)并實(shí)現(xiàn)了任務(wù)動(dòng)態(tài)調(diào)度器;引入了事件編程和郵件模板技術(shù),并將這些技術(shù)集成到SSH框架中。圖2展示了SSH集成和擴(kuò)展的技術(shù)與框架。

        3 SSH擴(kuò)展框架在某市俱樂(lè)部管理系統(tǒng)(BallOrganizer)的應(yīng)用

        3.1 項(xiàng)目背景

        由于人們對(duì)物質(zhì)的需求向精神需求擴(kuò)展,推動(dòng)了俱樂(lè)部的發(fā)展。如果將IT方面的管理經(jīng)驗(yàn)應(yīng)用于俱樂(lè)部的管理,肯定會(huì)對(duì)俱樂(lè)部的管理和發(fā)展產(chǎn)生很大作用。BallAdmin項(xiàng)目就是在這種背景下產(chǎn)生的。

        3.2 基本功能

        BallOrganizer是一個(gè)籃球俱樂(lè)部管理軟件。申請(qǐng)人在申請(qǐng)通過(guò)后,在BallOrganizer就有了自己俱樂(lè)部管理空間,可以在自己的管理空間增加會(huì)員,增加隊(duì)伍,開(kāi)展活動(dòng)等。圖3為系統(tǒng)功能圖。

        3.3 SSH擴(kuò)展框架在系統(tǒng)中的應(yīng)用

        BallOrganizer的開(kāi)發(fā)使用了SSH擴(kuò)展框架。其中BallOrganizer的MVC層使用了Spring MVC,由于需求中沒(méi)有頁(yè)面流和復(fù)雜數(shù)據(jù)的組織,因此沒(méi)有使用Spring Web Flow和Spring JSON View。Spring實(shí)現(xiàn)對(duì)容器中的對(duì)象、事務(wù)和其他框架進(jìn)行管理,Hibernate存取數(shù)據(jù),Compass框架可檢索數(shù)據(jù),Spring Security對(duì)權(quán)限安全進(jìn)行管理控制,Easy Mock對(duì)各層進(jìn)行單元測(cè)試。

        另外,BallOrganizer在前臺(tái)頁(yè)面使用基于DWR及時(shí)驗(yàn)證器驗(yàn)證合法性,任務(wù)動(dòng)態(tài)調(diào)度對(duì)郵件發(fā)送進(jìn)行調(diào)度,郵件模板技術(shù)對(duì)所有郵件內(nèi)容進(jìn)行填充,事件編程方式對(duì)BallOrganizer靜態(tài)頁(yè)面變化進(jìn)行處理。由于篇幅所限,以下僅就單元測(cè)試、Spring Security控制權(quán)限、Ajax和任務(wù)調(diào)度對(duì)SSH擴(kuò)展框架在系統(tǒng)開(kāi)發(fā)中的應(yīng)用進(jìn)行描述。

        3.3.1 DAO單元測(cè)試的應(yīng)用

        DAO的模塊劃分與系統(tǒng)的功能模塊劃分完全一致,除去Email不需要DAO以外,其他模塊都有相對(duì)應(yīng)的DAO支持。在實(shí)際開(kāi)發(fā)過(guò)程中,DAO的許多方法例如增、刪、基本查詢都是類似的,可以抽象出一個(gè)所有DAO的父類DomainObjectDao。DomainObjectDao主要提供了更新實(shí)體、保存實(shí)體、根據(jù)實(shí)體類獲取所有的實(shí)體、根據(jù)guid獲取實(shí)體等。圖4為DAO繼承結(jié)構(gòu)圖。

        在DAO完成后,為了保證DAO的正確性,需要對(duì)DAO進(jìn)行單元測(cè)試,以下程序?qū)崿F(xiàn)BallDao對(duì)Ball類的具體測(cè)試。

        3.3.2 Spring Security控制權(quán)限的應(yīng)用

        BallOragnizer具有前臺(tái)和后臺(tái)頁(yè)面,Ball具有前臺(tái)和后臺(tái)頁(yè)面,BallOragnizer可以有無(wú)數(shù)多個(gè)Ball,并且訪問(wèn)它們的權(quán)限完全不同。因此對(duì)系統(tǒng)中對(duì)URL的管理好壞將直接影響系統(tǒng)成敗。

        在BallOragnizer中,對(duì)于URL的管理引入了域名分級(jí)的思想,就是使用Ball的名稱跟在根URL后,用來(lái)標(biāo)識(shí)這個(gè)Ball的URL。使用這種方式可以很好地組織系統(tǒng)中URL并且可以很方便地使用Spring Security來(lái)控制權(quán)限。表1展示了系統(tǒng)中URL管理。

        3.3.3 Ajax應(yīng)用

        BallOragnizer中,一個(gè)Ball可以有多個(gè)團(tuán)隊(duì),并且這些團(tuán)隊(duì)可以由用戶隨意進(jìn)行拖放排序。這種功能的實(shí)現(xiàn)主要需要Ajax實(shí)時(shí)數(shù)據(jù)傳輸功能實(shí)現(xiàn),需要將前臺(tái)搜集到的團(tuán)隊(duì)序號(hào)傳到后臺(tái)并對(duì)相應(yīng)的團(tuán)隊(duì)序號(hào)進(jìn)行修改。

        3.3.4 任務(wù)調(diào)度的應(yīng)用

        BallOrganizer中使用了許多任務(wù)調(diào)度。任務(wù)調(diào)度的使用主要分為兩種動(dòng)態(tài)安排任務(wù),即任務(wù)動(dòng)態(tài)調(diào)度和系統(tǒng)初始時(shí)設(shè)置的任務(wù)調(diào)度。任務(wù)動(dòng)態(tài)調(diào)度使用主要是對(duì)Email發(fā)送進(jìn)行任務(wù)動(dòng)態(tài)調(diào)度。系統(tǒng)初始時(shí)設(shè)定的任務(wù)調(diào)度,主要用于為新注冊(cè)會(huì)員自動(dòng)發(fā)送歡迎信件等。

        3.3.5 Compass檢索框架的應(yīng)用

        Compass檢索框架在BallOrganizer中的主要功能是實(shí)現(xiàn)對(duì)實(shí)體對(duì)象的檢索和索引更新。與Spring對(duì)Hibernate的支持類似,Compass對(duì)Spring集成做了很好的封裝,并提供了CompassTemplate來(lái)簡(jiǎn)化諸如對(duì)Session、Transaction、Exception等操作,使用此工具,可以有效提高檢索效率。例如以下代碼實(shí)現(xiàn)把實(shí)體對(duì)象Ball存儲(chǔ)到Compass索引:

        4 結(jié)束語(yǔ)

        傳統(tǒng)的SSH框架存在安全性差、應(yīng)用不便等問(wèn)題。本文根據(jù)現(xiàn)有成熟技術(shù)結(jié)合SSH框架集成了一個(gè)簡(jiǎn)單靈活、權(quán)限安全控制簡(jiǎn)便、容易測(cè)試和各種技術(shù)松耦合的開(kāi)發(fā)框架。通過(guò)實(shí)例驗(yàn)證表明,該擴(kuò)展框架可使開(kāi)發(fā)人員將關(guān)注點(diǎn)更多地集中到業(yè)務(wù)邏輯上,提高了軟件開(kāi)發(fā)和維護(hù)效率。

        拍摄av现场失控高潮数次| 深夜黄色刺激影片在线免费观看| 开心五月天第四色婷婷| 国产亚洲精品精品精品| 欧美国产日韩a在线视频| 91久久综合精品国产丝袜长腿| 一区二区三区成人av| 国产精华液一区二区三区| 国产自产拍精品视频免费看| 国产美女一区三区在线观看| 8x国产精品视频| 特级婬片国产高清视频| 久久av高潮av喷水av无码| 麻豆夫妻在线视频观看| 国产在线观看91一区二区三区| 国产办公室沙发系列高清| 亚洲国产福利精品一区二区| 久久99精品免费国产| 男女交射视频免费观看网站| 亚洲国产成人精品无码一区二区| 日韩国产一区| 粉嫩的18在线观看极品精品| 亚洲中文字幕午夜精品| 国产成人无码一区二区三区在线| 91华人在线| 五月婷婷丁香视频在线观看 | 色婷婷一区二区三区四区成人网| 亚洲精品黑牛一区二区三区| 男人天堂av在线成人av| 大陆少妇一区二区三区| 国产情侣自拍一区视频| 欧洲freexxxx性少妇播放| 中文字幕一区二区三区四区在线| 亚洲女同精品一区二区久久| 手机在线看片国产人妻| 国产成人精品久久一区二区三区 | 国产成人福利在线视频不卡| 91九色播放在线观看| 国产男小鲜肉同志免费| 中文毛片无遮挡高潮| 亚洲女同性恋激情网站|