• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于J2EE的Web信息系統(tǒng)開發(fā)方法的定義

    2012-11-25 02:37:16陳景霞
    制造業(yè)自動(dòng)化 2012年16期
    關(guān)鍵詞:單元測(cè)試配置文件數(shù)據(jù)源

    陳景霞,李 萌

    CHEN Jing-xia,LI Meng

    (陜西科技大學(xué) 電氣與信息工程學(xué)院,西安 710021)

    0 引言

    隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和普及,越來越多的復(fù)雜動(dòng)態(tài)空間非線性分析系統(tǒng)的軟件工具開始使用基于Web的網(wǎng)絡(luò)平臺(tái)實(shí)現(xiàn)用戶界面、科學(xué)分析、信息處理、分發(fā)數(shù)據(jù)結(jié)果、行業(yè)專家跨地域信息交換和共享等功能。其中,對(duì)非線性分析模擬系統(tǒng)軟件基于web平臺(tái)的實(shí)時(shí)訪問正成為網(wǎng)絡(luò)應(yīng)用系統(tǒng)中很重要的一部分。飛速發(fā)展的網(wǎng)絡(luò)硬件和軟件技術(shù)為web應(yīng)用開發(fā)提供了更多的選擇方案。因而,合理的選擇和開發(fā)web平臺(tái)對(duì)于非線性分析系統(tǒng)及其應(yīng)用顯得越來越重要。Web開發(fā)現(xiàn)階段涌現(xiàn)出了許多優(yōu)秀的開源框架,將web開發(fā)提升到一個(gè)更高的水平[1]。但是在某些情況下,開源框架并不能直接為常見的問題提供解決辦法,開發(fā)者往往需要在開源框架基礎(chǔ)上構(gòu)建自己的開發(fā)框架。在分析現(xiàn)有幾種開源框架特性和用法的基礎(chǔ)上,本文研究一種新型的基于J2EE的開源框架組合,并定義了加強(qiáng)幾種開源框架協(xié)同工作的技術(shù)體系和方法,有效的提高了web系統(tǒng)定制開發(fā)與集成的效率。

    開發(fā)web應(yīng)用項(xiàng)目時(shí),通常有一些共同的設(shè)計(jì)問題需要考慮,如表現(xiàn)層、業(yè)務(wù)層、數(shù)據(jù)訪問層的設(shè)計(jì)以及系統(tǒng)測(cè)試等等,甚至圍繞個(gè)別獨(dú)特功能性需求也會(huì)使用一些共同的設(shè)計(jì)模式,這就不可避免的會(huì)出現(xiàn)開發(fā)框架與設(shè)計(jì)模式的重用[2]。本文描述一種定制的J2EE框架(Customized J2EE Web-based Framework,簡稱CJW架構(gòu)),它能夠識(shí)別一般web應(yīng)用開發(fā)的共同設(shè)計(jì)要素,提供從用戶表現(xiàn)層到數(shù)據(jù)層一整套web應(yīng)用開發(fā)模式、工具和實(shí)踐方法。該框架基于Struts、Spring、Hibernate和JUnit等開源框架和工具進(jìn)行構(gòu)建和開發(fā),可以進(jìn)行靈活定制以滿足各種Web項(xiàng)目的開發(fā)需求。

    1 CJW架構(gòu)關(guān)鍵技術(shù)

    1.1 代碼和配置信息的分離

    Web應(yīng)用程序的設(shè)計(jì)需要考慮諸如表現(xiàn)層、業(yè)務(wù)邏輯、數(shù)據(jù)存取和安全性等多個(gè)層面的因素,將不同的設(shè)計(jì)任務(wù)分解到不同的層次能夠有效降低系統(tǒng)代碼的耦合度,提高系統(tǒng)的可維護(hù)性,也便于采用好的設(shè)計(jì)模式,為特定設(shè)計(jì)層選擇專用的開發(fā)工具和技術(shù)。同時(shí),將一個(gè)項(xiàng)目進(jìn)行層次劃分會(huì)導(dǎo)致各層之間存在相互依賴。例如,一個(gè)簡單的包含數(shù)據(jù)輸入和查詢功能的用例,只有將表現(xiàn)層的用戶界面、查詢邏輯代碼和數(shù)據(jù)庫存取代碼結(jié)合起來才能實(shí)現(xiàn)所需要的功能,因此,需要定義一種好的策略來管理各層之間的依賴關(guān)系。

    本文開發(fā)的CJW架構(gòu)使用Spring框架將設(shè)計(jì)模式、可復(fù)用的代碼和配置文件結(jié)合起來[3],通過控制反轉(zhuǎn)(IOC)技術(shù)實(shí)現(xiàn)系統(tǒng)各層的松耦合,通過IOC容器管理各個(gè)對(duì)象之間的依賴關(guān)系,能夠有效避免硬性編碼造成的耦合過于緊密的狀況;使用依賴注入(Dependency Injection,DI)技術(shù)實(shí)現(xiàn)邏輯相關(guān)代碼的松耦合,依賴注入是由框架或容器將被調(diào)用類注入給調(diào)用對(duì)象,以此來消除對(duì)象和被調(diào)用類之間的依賴關(guān)系,具體實(shí)現(xiàn)形式包括構(gòu)造函數(shù)注入,設(shè)值方法注入和接口注入[4]。同時(shí),Spring框架提供的面向切面編程(AOP)方法,通過方法攔截可以輕松的實(shí)現(xiàn)諸如事務(wù)管理、日志管理、性能監(jiān)控、安全檢測(cè)等關(guān)注點(diǎn)編程。方法攔截是Spring AOP的一個(gè)重要概念,通過JDK動(dòng)態(tài)代理機(jī)制實(shí)現(xiàn),使開發(fā)人員能夠更加專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)[5]。

    CJW架構(gòu)包括兩個(gè)部分:代碼和配置信息。代碼在特別的應(yīng)用層中負(fù)責(zé)解決某個(gè)特定的問題,如與數(shù)據(jù)庫的連接和交互、屏幕端的數(shù)據(jù)顯示等。而配置文件則負(fù)責(zé)將應(yīng)用的各個(gè)層連接起來。將配置信息從代碼中分離出來不僅可以單獨(dú)對(duì)配置信息進(jìn)行管理,也可以靈活地將不同的配置信息應(yīng)用于相同的底層代碼。例如,一個(gè)數(shù)據(jù)庫訪問對(duì)象(DAO)能夠使用JDBC接口通過某個(gè)數(shù)據(jù)源連接數(shù)據(jù)庫,但它并不清楚這個(gè)數(shù)據(jù)源的連接信息究竟是從JNDI上下文中獲取的,還是通過數(shù)據(jù)庫驅(qū)動(dòng)管理器獲取的,該數(shù)據(jù)源可以連接遠(yuǎn)程數(shù)據(jù)庫,也可以連接本地?cái)?shù)據(jù)庫。無論這個(gè)數(shù)據(jù)源如何定義,DAO都能以相同的方式調(diào)用它。同樣,一個(gè)服務(wù)對(duì)象(Service)可以用相同的模式調(diào)用一個(gè)DAO而不必知道該DAO是使用Hibernate或是Web服務(wù)實(shí)現(xiàn),還是直接通過JDBC實(shí)現(xiàn)的。

    CJW架構(gòu)通過一組XML文件描述、管理整個(gè)應(yīng)用的上下文配置信息,這些配置文件的邏輯集合就構(gòu)成了整個(gè)應(yīng)用的配置集合。在基于J2EE的企業(yè)級(jí)應(yīng)用開發(fā)過程中,系統(tǒng)框架對(duì)數(shù)據(jù)源和JNDI等外部資源的使用通常在標(biāo)準(zhǔn)配置中定義,但可能會(huì)遇到如下問題:1)數(shù)據(jù)庫的數(shù)據(jù)還沒有被完全加載時(shí),開發(fā)人員想要測(cè)試其中某種類型數(shù)據(jù)的顯示結(jié)果,導(dǎo)致這部分測(cè)試工作無法進(jìn)行。2)某些Service服務(wù)類或DAO還沒有完成開發(fā),那么與此相關(guān)的代碼集成和測(cè)試就會(huì)阻礙整個(gè)開發(fā)的進(jìn)程。

    針對(duì)上述問題,本文提出的CJW架構(gòu)采用一種專門面向開發(fā)的配置集合代替?zhèn)鹘y(tǒng)的配置方法,使開發(fā)人員不必?fù)?dān)心那些與緊迫開發(fā)需求無關(guān)的外部系統(tǒng)是否可用。CJW架構(gòu)定義了兩個(gè)配置集合:默認(rèn)配置和模塊配置,基于這兩種配置和特定的項(xiàng)目需求,開發(fā)者也可以增加額外的配置文件來定制自己的應(yīng)用架構(gòu)。默認(rèn)配置使用JNDI定義的數(shù)據(jù)源與開發(fā)數(shù)據(jù)庫建立連接,并且調(diào)用已經(jīng)完全開發(fā)好的Service和DAO對(duì)象。而靈活的開發(fā)環(huán)境則是由模塊配置集合搭建的,這些配置集合具備以下功能:1)可以連接本地?cái)?shù)據(jù)庫,或是通過DriverManagerDataSource驅(qū)動(dòng)程序管理器連接開發(fā)數(shù)據(jù)庫;2)使用Spring框架的DataSourceTransactionManager進(jìn)行本地事務(wù)管理;3)調(diào)用完全開發(fā)好的應(yīng)用Service和DAO對(duì)象;4)使整個(gè)基于Spring框架的應(yīng)用上下文能夠在應(yīng)用服務(wù)器外部進(jìn)行完整的運(yùn)行和測(cè)試。

    CJW架構(gòu)的配置集合包括service和Web兩部分:Service部分定義各種服務(wù)接口和實(shí)現(xiàn)(即services)、數(shù)據(jù)庫訪問對(duì)象接口和實(shí)現(xiàn)(即DAOs)以及服務(wù)和整合層用到的各種資源;Web部分主要為表現(xiàn)層定義各種顯示組件。這兩部分對(duì)于一個(gè)完整的配置集合缺一不可。CJW架構(gòu)的配置集合由Spring框架的beanRefContext.xml和applicationContextMapping.properties等配置文件化合而成。其中,beanRefContext.xml文件定義了所有配置集合的services,它通常位于項(xiàng)目的src/config目錄下,不同配置集合共享的應(yīng)用上下文文件也位于這個(gè)目錄下。此外,每一個(gè)模塊配置集合都有自己的子目錄,其下包含自己的相關(guān)文件。在XML文件中使用

    1.2 類與依賴關(guān)系的設(shè)計(jì)

    配置好上述CJW架構(gòu)之后,接下來的編碼與整體構(gòu)造工作包括:開發(fā)相應(yīng)的用戶端界面;設(shè)計(jì)相應(yīng)的Action類、ActionForm類和validation.xml輸入校驗(yàn)組件;設(shè)計(jì)服務(wù)層service接口和實(shí)現(xiàn)類;設(shè)計(jì)數(shù)據(jù)訪問層DAO接口和實(shí)現(xiàn)類;管理各個(gè)類之間的依賴關(guān)系。在開發(fā)一個(gè)實(shí)際用例時(shí),弄清楚上述這些類的詳細(xì)需求和彼此之間的依賴關(guān)系非常重要。

    1.3 測(cè)試技術(shù)

    測(cè)試應(yīng)該是整個(gè)開發(fā)過程中不可或缺的一部分。對(duì)于本文提出的CJW框架而言,單元測(cè)試是指基于JUnit框架[6]實(shí)現(xiàn)的對(duì)服務(wù)層或整合層中每個(gè)類所進(jìn)行的測(cè)試,其目的是確保類中封裝的方法結(jié)合其它組件運(yùn)行時(shí)能實(shí)現(xiàn)預(yù)期的功能。表現(xiàn)層的Action類通常不需要進(jìn)行單元測(cè)試。與單元測(cè)試不同,集成測(cè)試需要代碼之間的相互依賴,其目的是確保不同開發(fā)者開發(fā)的類聯(lián)合運(yùn)行時(shí)能實(shí)現(xiàn)預(yù)期的功能。而功能測(cè)試的重點(diǎn)則要針對(duì)每種可能出現(xiàn)的情況設(shè)計(jì)測(cè)試數(shù)據(jù),并用這些數(shù)據(jù)測(cè)試應(yīng)用的功能性,包括使用不同的數(shù)據(jù)對(duì)服務(wù)層的類進(jìn)行功能測(cè)試,或者用真實(shí)的依賴關(guān)系對(duì)用戶界面層進(jìn)行功能測(cè)試。

    為了進(jìn)行不同類型的測(cè)試,首先要確保開發(fā)的應(yīng)用程序是可測(cè)試的,一個(gè)可測(cè)試的應(yīng)用需要具備以下基本特征:1)系統(tǒng)開發(fā)要便于進(jìn)行單元測(cè)試和集成測(cè)試,應(yīng)該在沒有必須數(shù)據(jù)源或創(chuàng)建隊(duì)列的情況下就能進(jìn)行單元測(cè)試,測(cè)試時(shí)應(yīng)該能夠模擬代碼之間的依賴性。2)為了進(jìn)行功能測(cè)試,應(yīng)用設(shè)計(jì)要便于模擬各種可能的測(cè)試情況。3)便于在應(yīng)用的整個(gè)生命周期反復(fù)的運(yùn)行所有測(cè)試。4)測(cè)試代碼和應(yīng)用代碼劃分清楚,互不干擾。將表現(xiàn)層、服務(wù)層和數(shù)據(jù)訪問層的設(shè)計(jì)相分離的良好系統(tǒng)架構(gòu),對(duì)于設(shè)計(jì)一個(gè)可測(cè)試的應(yīng)用非常重要。本文開發(fā)的CJW架構(gòu)將更有利于設(shè)計(jì)出可測(cè)試的應(yīng)用系統(tǒng):首先提供了測(cè)試模板類有助于創(chuàng)建單元測(cè)試;整個(gè)應(yīng)用的配置更加靈活便于適應(yīng)各種測(cè)試需要;能夠像任何JUnit測(cè)試那樣進(jìn)行單元測(cè)試,簡單方便。CJW架構(gòu)中還專門開發(fā)了默認(rèn)的Ant編譯腳本,在生成EAR文件時(shí)可以被調(diào)用對(duì)系統(tǒng)進(jìn)行單元測(cè)試,也可以單獨(dú)運(yùn)行完成單元測(cè)試。

    1.4 Web表現(xiàn)層的設(shè)計(jì)

    本文開發(fā)的CJW架構(gòu)使用Struts框架和JavaScript技術(shù)實(shí)現(xiàn)系統(tǒng)的表現(xiàn)層邏輯,處理應(yīng)用程序與客戶端的交互問題,并且為項(xiàng)目的擴(kuò)展提供附加的技術(shù)支持。應(yīng)用Struts框架進(jìn)行開發(fā)時(shí),首先要在web.xml文件中建立Action Servlet,然后在struts-config.xml文件中設(shè)置action mappings、formbeans以及頁面重定向;最后在validation.xml文件中設(shè)置數(shù)據(jù)校驗(yàn)規(guī)則,對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行檢查。為了使開發(fā)者不必頻繁的編輯struts-config.xml或者validation.xml,CJW架構(gòu)對(duì)上述方法進(jìn)行了改進(jìn),使開發(fā)者在Action類和ActionForm類中應(yīng)用XDoclet注釋進(jìn)行配置說明,注釋信息在運(yùn)行Ant腳本時(shí)能自動(dòng)轉(zhuǎn)換成strutsconfig.xml和validation.xml配置文件。

    CJW架構(gòu)設(shè)計(jì)了一個(gè)默認(rèn)的Action模板類,使表現(xiàn)層的設(shè)計(jì)達(dá)到以下目標(biāo):1)每個(gè)JSP頁面都對(duì)應(yīng)一個(gè)唯一的Action處理類,一個(gè)Action類負(fù)責(zé)對(duì)一個(gè)單一的web頁面進(jìn)行處理。2)在Action類和ActionForm類中使用XDoclet注釋對(duì)類之間的依賴關(guān)系及合法性校驗(yàn)規(guī)則進(jìn)行說明。3)盡量避免或減少使用session會(huì)話對(duì)象,否則會(huì)降低系統(tǒng)的可伸縮性。然后,遵循以下步驟開發(fā)一個(gè)web頁面:1)創(chuàng)建一個(gè)新的JSP頁面,其中包含一個(gè)名為“actionType”的默認(rèn)隱藏域,用來表示用戶希望對(duì)該頁面進(jìn)行的處理類型。2)通過繼承Action模板類創(chuàng)建一個(gè)新的Action類,必須說明該Action類與ActionForm中“actionType”隱藏域所表示處理方法的對(duì)應(yīng)關(guān)系,然后在Spring配置文件中聲明訪問這個(gè)Action類的條件。3)創(chuàng)建一個(gè)新的ActionForm類并使用XDoclet注釋說明表單數(shù)據(jù)的有效性校驗(yàn)規(guī)則。一旦JSP、Action以及ActionForm創(chuàng)建完成,必須運(yùn)行Ant腳本重新生成struts-config.xml配置文件。

    1.5 數(shù)據(jù)庫存取

    基于CJW架構(gòu)開發(fā)的應(yīng)用程序支持直接使用JDBC和Hibernate框架與關(guān)系數(shù)據(jù)庫建立持久連接和數(shù)據(jù)通信,在必要的Spring上下文文件中進(jìn)行配置即可。直接使用JDBC訪問數(shù)據(jù)庫的DAO類必須繼承Spring框架的JdbcDaoSupport.java類;使用Hibernate框架訪問數(shù)據(jù)庫的DAO類必須繼承Spring框架的HibernateDaoSupport.java類。

    1.6 通過注釋進(jìn)行配置

    CJW架構(gòu)使用Spring框架來維護(hù)代碼之間的依賴性。例如,Action類和ActionForm之間的依賴性在struts-config.xml文件中配置,而Service類和DAO類之間的依賴性在Spring應(yīng)用上下文文件applicationContext.xml中配置。在同一個(gè)開發(fā)小組中這些配置文件被所有開發(fā)者共享,這可能導(dǎo)致配置文件的版本沖突。CJW架構(gòu)提供了一種新型有效的方法,即XDoclet注釋來說明類之間的依賴性,這種注釋的方法不僅簡化了系統(tǒng)的配置,而且能有效避免配置文件的版本沖突。

    2 CJW架構(gòu)的服務(wù)體系

    本文開發(fā)的CJW架構(gòu)提出使用簡單的JavaBeans(即POJOs)實(shí)現(xiàn)業(yè)務(wù)邏輯,而業(yè)務(wù)邏輯必須以接口的形式進(jìn)行聲明,所有的Service實(shí)現(xiàn)類必須實(shí)現(xiàn)一個(gè)或多個(gè)業(yè)務(wù)接口,并且建議當(dāng)服務(wù)層出現(xiàn)業(yè)務(wù)邏輯錯(cuò)誤時(shí)能拋出定制的異常。CJW架構(gòu)采用基于Spring框架的面向方面編程(AOP)的方式實(shí)現(xiàn)事務(wù)管理。同時(shí),CJW架構(gòu)很好地將面向服務(wù)用戶的部署接口與面向業(yè)務(wù)邏輯的服務(wù)接口相分離。部署接口是一種可以用Web服務(wù)定義語言(WSDL)描述的外部接口,這類接口的實(shí)現(xiàn)類通常必須將請(qǐng)求委托給實(shí)現(xiàn)服務(wù)接口的類。服務(wù)接口則是表示業(yè)務(wù)邏輯的Java接口,這樣能確保所有的業(yè)務(wù)邏輯在業(yè)務(wù)層的一個(gè)固定類中進(jìn)行定義和維護(hù)。部署接口中通常會(huì)包含服務(wù)接口中的若干方法。

    Apache Axis 1.2.4框架是目前流行的標(biāo)準(zhǔn)Web服務(wù)架構(gòu)。開發(fā)Web服務(wù)有兩種不同的方法[7]:契約在前和契約在后,這兩者之間的區(qū)別在于WSDL是在編碼之前創(chuàng)建的,還是從寫好的代碼中產(chǎn)生的。如果服務(wù)的消費(fèi)者和提供者都是使用各自不同技術(shù)(如.NET或Java)去實(shí)現(xiàn)Web服務(wù)的供應(yīng)商,那就適合采用契約在前的方法開發(fā)Web 服務(wù)[10]。

    3 中間層的整合

    CJW架構(gòu)在業(yè)務(wù)邏輯中間層采用相關(guān)技術(shù)實(shí)現(xiàn)與數(shù)據(jù)庫、Web服務(wù)等外部資源的整合,其整合的目標(biāo)在于:1)將基于JDBC或Hibernate的數(shù)據(jù)庫訪問操作封裝在數(shù)據(jù)訪問對(duì)象(DAO)中;2)盡可能簡化對(duì)Web服務(wù)的調(diào)用;3)所有外部數(shù)據(jù)向應(yīng)用域?qū)ο蟮霓D(zhuǎn)換操作應(yīng)該限制在這一層進(jìn)行;4)這一層中的單元測(cè)試類要設(shè)計(jì)簡單且易于執(zhí)行。

    CJW架構(gòu)支持使用Spring框架的JdbcTemplate和HibernateTemplate模板類訪問關(guān)系數(shù)據(jù)庫。當(dāng)直接使用JDBC訪問關(guān)系數(shù)據(jù)庫時(shí),應(yīng)用中的DAO對(duì)象可以繼承Spring框架的JdbcDaoSupport類,該類管理著訪問數(shù)據(jù)庫要用到的各種資源(例如預(yù)處理語句對(duì)象PreparedStatement等)。CJW架構(gòu)可以通過應(yīng)用配置文件將數(shù)據(jù)源插入到DAO類中。當(dāng)使用Hibernate時(shí),同樣可以通過應(yīng)用配置文件將Hibernate的SessionFactory注入到DAO類中。

    4 開發(fā)生命周期

    本文開發(fā)的CJW框架結(jié)構(gòu)也明確定義了應(yīng)用開發(fā)小組的人員角色及各自的作用:1)前端開發(fā)者主要負(fù)責(zé)設(shè)計(jì)開發(fā)JSP頁面、Action/ActionForm類以及對(duì)外的Web服務(wù)接口;2)中間服務(wù)層的開發(fā)者則負(fù)責(zé)開發(fā)各種應(yīng)用服務(wù),并將這些服務(wù)相關(guān)的應(yīng)用模塊進(jìn)行集成;3)底層開發(fā)者主要負(fù)責(zé)開發(fā)各種DAO類以及密集型Web服務(wù)。各個(gè)角色之間的相互配合對(duì)整個(gè)應(yīng)用開發(fā)的成敗將起決定性的作用。

    開發(fā)中經(jīng)常會(huì)遇到的一個(gè)基本問題是當(dāng)代碼相關(guān)的組件不可用時(shí)如何對(duì)代碼進(jìn)行開發(fā)和集成。針對(duì)這個(gè)問題,CJW架構(gòu)提供了一種以聲明方式注入“模擬對(duì)象”的結(jié)構(gòu),這些“模擬對(duì)象”隨著開發(fā)周期的推進(jìn)將被實(shí)際的對(duì)象所取代。同時(shí),編寫、運(yùn)行JUnit測(cè)試也使得測(cè)試工作成為開發(fā)過程不可缺少的一部分,CJW架構(gòu)重點(diǎn)測(cè)試應(yīng)用的服務(wù)以及服務(wù)之間的依賴關(guān)系。應(yīng)用程序以EAR企業(yè)歸檔文件的形式進(jìn)行部署,EAR文件可以通過手工運(yùn)行Ant腳本生成,也可以通過調(diào)度程序周期性的執(zhí)行Ant腳本生成。建議在生成EAR文件之前完成所有的JUnit測(cè)試。

    5 結(jié)論

    本文提出了一個(gè)基于J2EE的web信息系統(tǒng)開發(fā)架構(gòu)CJW,重點(diǎn)論述了開發(fā)J2EE項(xiàng)目應(yīng)該考慮的系統(tǒng)架構(gòu)、相關(guān)技術(shù)和開發(fā)步驟。該架構(gòu)取自于真實(shí)的項(xiàng)目經(jīng)驗(yàn),目的是幫助開發(fā)者們以此為參考,更快、更好的構(gòu)建J2EE系統(tǒng)并設(shè)計(jì)出滿足自己需求的定制框架。不過,這只是冰山一角,只此一篇論文并不能描述清楚J2EE的技術(shù)細(xì)節(jié)以及J2EE在科學(xué)和企業(yè)應(yīng)用中的潛在影響,尤其是在基于Web的非線性分析模擬軟件方面,作者將進(jìn)一步研究該CJW架構(gòu)在此方面的應(yīng)用和優(yōu)化。

    [1] 李成嚴(yán),馮慧靈. 基于開源技術(shù)的Web應(yīng)用架構(gòu)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(8): 27-30.

    [2] 曾亮,齊歡,王小平等.基于J2EE核心模式的組合Web框架研究[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,35(6):43-46.

    [3] 袁華強(qiáng),王亞強(qiáng),朱君. 利用J2EE輕量級(jí)框架構(gòu)建Web應(yīng)用研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2007,28(1): 22-25.

    [4] The Spring Framework official website: http://www.springframework.org/.

    [5] Martin Fowler discusses details of the dependency injection pattern and how spring injects dependen cies: http://www.martinfowler.com/.

    [6] JUnit framework: http://www.junit.org/.

    [7] A.S. Boranbayev,Optimal methods for java web services,News of the National Academy of Science of the Republic of Kazakhstan 5 (2007) 38-43.

    猜你喜歡
    單元測(cè)試配置文件數(shù)據(jù)源
    提示用戶配置文件錯(cuò)誤 這樣解決
    搭建簡單的Kubernetes集群
    互不干涉混用Chromium Edge
    忘記ESXi主機(jī)root密碼怎么辦
    Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
    基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
    基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
    一年級(jí)上冊(cè)第五單元測(cè)試
    一年級(jí)上冊(cè)一、二單元測(cè)試
    分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)
    老女人水多毛片| 日韩伦理黄色片| 美女大奶头黄色视频| 黑丝袜美女国产一区| 伦理电影大哥的女人| 国产精品一区二区三区四区免费观看| 久久久精品免费免费高清| 亚洲精品久久成人aⅴ小说 | 国产免费现黄频在线看| 插逼视频在线观看| 肉色欧美久久久久久久蜜桃| 午夜福利网站1000一区二区三区| 菩萨蛮人人尽说江南好唐韦庄| av国产精品久久久久影院| 亚洲精品日本国产第一区| 久久精品国产a三级三级三级| 国产成人午夜福利电影在线观看| 边亲边吃奶的免费视频| 九九久久精品国产亚洲av麻豆| 免费观看性生交大片5| a级毛色黄片| 成人午夜精彩视频在线观看| 婷婷色麻豆天堂久久| 一级片'在线观看视频| 国语对白做爰xxxⅹ性视频网站| 久久久久久久大尺度免费视频| 91精品一卡2卡3卡4卡| 男女啪啪激烈高潮av片| 有码 亚洲区| 国内精品宾馆在线| 午夜免费观看性视频| 亚洲欧美精品自产自拍| 精品久久久久久久久av| 国产日韩欧美视频二区| 日韩成人伦理影院| 街头女战士在线观看网站| 国产片内射在线| 国产免费一区二区三区四区乱码| 18禁动态无遮挡网站| 人人妻人人爽人人添夜夜欢视频| 午夜av观看不卡| 热99国产精品久久久久久7| 亚洲成人一二三区av| 午夜免费男女啪啪视频观看| 国产精品成人在线| 免费大片18禁| 亚洲国产欧美日韩在线播放| 久久久久久久久久成人| 最新中文字幕久久久久| 高清不卡的av网站| 伊人久久国产一区二区| 肉色欧美久久久久久久蜜桃| 美女国产视频在线观看| 下体分泌物呈黄色| 精品一品国产午夜福利视频| 国产精品国产三级专区第一集| 国产片内射在线| 欧美xxxx性猛交bbbb| 精品亚洲成a人片在线观看| 成人亚洲精品一区在线观看| 国产伦精品一区二区三区视频9| 黄色毛片三级朝国网站| 亚洲精品国产av蜜桃| 久久久久国产网址| www.色视频.com| 能在线免费看毛片的网站| 亚洲精品一区蜜桃| 男女免费视频国产| 国产亚洲最大av| 狂野欧美白嫩少妇大欣赏| av专区在线播放| 日韩一本色道免费dvd| 免费av中文字幕在线| 九色亚洲精品在线播放| 日韩成人伦理影院| 成人国产麻豆网| 精品国产国语对白av| 高清在线视频一区二区三区| 我的老师免费观看完整版| 又粗又硬又长又爽又黄的视频| 国产片特级美女逼逼视频| 欧美97在线视频| 成人毛片60女人毛片免费| 精品久久久久久久久av| 国产无遮挡羞羞视频在线观看| 在线精品无人区一区二区三| 精品久久久久久电影网| 国产精品久久久久久精品电影小说| 日韩精品免费视频一区二区三区 | 日本av免费视频播放| 日韩成人av中文字幕在线观看| 美女视频免费永久观看网站| 久久国产精品大桥未久av| 亚洲综合色惰| 简卡轻食公司| 欧美亚洲日本最大视频资源| 91成人精品电影| 日本-黄色视频高清免费观看| 国产精品人妻久久久影院| 日韩亚洲欧美综合| 午夜福利,免费看| 亚洲天堂av无毛| 卡戴珊不雅视频在线播放| 国产深夜福利视频在线观看| 全区人妻精品视频| 搡老乐熟女国产| 三级国产精品片| 免费看光身美女| 国产国语露脸激情在线看| 久久久久久久精品精品| 大片免费播放器 马上看| 亚洲美女黄色视频免费看| 亚洲美女黄色视频免费看| 国产精品秋霞免费鲁丝片| 美女xxoo啪啪120秒动态图| 精品久久久精品久久久| 中文乱码字字幕精品一区二区三区| 久久人人爽人人片av| 国产色爽女视频免费观看| 日韩一区二区视频免费看| 一区二区日韩欧美中文字幕 | 少妇熟女欧美另类| 狠狠精品人妻久久久久久综合| 亚洲av成人精品一区久久| 蜜桃在线观看..| 女性生殖器流出的白浆| 我的老师免费观看完整版| 日本与韩国留学比较| 七月丁香在线播放| 日本av手机在线免费观看| 水蜜桃什么品种好| 久久久久久久亚洲中文字幕| 午夜日本视频在线| av在线播放精品| 亚洲av在线观看美女高潮| 狠狠婷婷综合久久久久久88av| 大片电影免费在线观看免费| 如何舔出高潮| 国产av精品麻豆| 久久人人爽人人爽人人片va| 建设人人有责人人尽责人人享有的| 国产在线视频一区二区| 国产欧美另类精品又又久久亚洲欧美| 秋霞在线观看毛片| 大香蕉久久网| 丰满乱子伦码专区| 精品亚洲乱码少妇综合久久| 午夜日本视频在线| 好男人视频免费观看在线| 亚洲三级黄色毛片| 国产 一区精品| 亚洲国产最新在线播放| 亚洲三级黄色毛片| 国产精品一国产av| 大香蕉97超碰在线| 人妻一区二区av| 成人国产麻豆网| 亚洲av免费高清在线观看| 国产又色又爽无遮挡免| 极品人妻少妇av视频| 国产精品嫩草影院av在线观看| 99久久人妻综合| 大香蕉久久网| 五月伊人婷婷丁香| 啦啦啦中文免费视频观看日本| 午夜久久久在线观看| 色视频在线一区二区三区| 亚洲欧美中文字幕日韩二区| 亚洲美女搞黄在线观看| 蜜桃在线观看..| 欧美精品一区二区大全| 亚洲美女视频黄频| 成人漫画全彩无遮挡| 亚洲欧美中文字幕日韩二区| 日日啪夜夜爽| 午夜福利,免费看| 精品人妻偷拍中文字幕| 少妇人妻久久综合中文| 一二三四中文在线观看免费高清| 国产一级毛片在线| 97超碰精品成人国产| 国产精品.久久久| 久久精品国产亚洲av天美| 免费av不卡在线播放| 亚洲综合色惰| 亚洲精品av麻豆狂野| 人妻系列 视频| 91成人精品电影| 女人久久www免费人成看片| 日韩av在线免费看完整版不卡| 日韩中文字幕视频在线看片| 国产免费视频播放在线视频| 欧美亚洲日本最大视频资源| 少妇的逼水好多| 一级毛片黄色毛片免费观看视频| av免费观看日本| 国产亚洲最大av| 男人爽女人下面视频在线观看| 日本91视频免费播放| 久久久久久久久久久免费av| 亚洲国产精品专区欧美| 亚洲成人手机| av专区在线播放| 久久久久精品久久久久真实原创| 99热6这里只有精品| 成人免费观看视频高清| 搡老乐熟女国产| 极品少妇高潮喷水抽搐| 亚洲色图 男人天堂 中文字幕 | 国精品久久久久久国模美| 亚洲三级黄色毛片| 日日撸夜夜添| 久热久热在线精品观看| 亚洲av国产av综合av卡| 国产精品久久久久久av不卡| av在线老鸭窝| 我的老师免费观看完整版| 少妇被粗大猛烈的视频| 最近中文字幕2019免费版| 国产熟女午夜一区二区三区 | 精品99又大又爽又粗少妇毛片| 国产精品人妻久久久久久| 国产男女超爽视频在线观看| 中文欧美无线码| 免费av中文字幕在线| 99九九在线精品视频| 新久久久久国产一级毛片| 国产成人freesex在线| .国产精品久久| 亚洲精品久久久久久婷婷小说| 黄色怎么调成土黄色| 水蜜桃什么品种好| 精品视频人人做人人爽| 纵有疾风起免费观看全集完整版| 亚洲美女搞黄在线观看| 波野结衣二区三区在线| 爱豆传媒免费全集在线观看| 午夜福利影视在线免费观看| 亚洲综合精品二区| 蜜桃久久精品国产亚洲av| 欧美日韩综合久久久久久| 亚洲精品色激情综合| 一本一本综合久久| 日本91视频免费播放| 欧美xxⅹ黑人| 精品久久久久久久久av| 最近的中文字幕免费完整| 久久久欧美国产精品| 制服诱惑二区| 亚洲综合精品二区| 免费人成在线观看视频色| 精品少妇黑人巨大在线播放| 国产午夜精品久久久久久一区二区三区| 国产亚洲最大av| 亚洲高清免费不卡视频| 国产精品麻豆人妻色哟哟久久| 亚洲精品aⅴ在线观看| 欧美性感艳星| 国产在线一区二区三区精| 交换朋友夫妻互换小说| 青春草亚洲视频在线观看| 精品人妻一区二区三区麻豆| 亚洲av欧美aⅴ国产| 一级二级三级毛片免费看| 51国产日韩欧美| 欧美人与善性xxx| 菩萨蛮人人尽说江南好唐韦庄| 美女福利国产在线| 日本欧美视频一区| 午夜日本视频在线| 国产精品女同一区二区软件| 特大巨黑吊av在线直播| 免费大片黄手机在线观看| av免费观看日本| 久久韩国三级中文字幕| av在线老鸭窝| 欧美精品人与动牲交sv欧美| 成人漫画全彩无遮挡| 午夜精品国产一区二区电影| 久久鲁丝午夜福利片| 久久久久久久久大av| 在线 av 中文字幕| 精品人妻在线不人妻| 永久免费av网站大全| 国产片内射在线| 国产精品蜜桃在线观看| 久久久国产精品麻豆| 一本—道久久a久久精品蜜桃钙片| 国产老妇伦熟女老妇高清| 97超碰精品成人国产| 国产极品粉嫩免费观看在线 | 久久精品国产亚洲网站| 国产成人午夜福利电影在线观看| 亚洲av欧美aⅴ国产| 亚洲性久久影院| 日韩在线高清观看一区二区三区| 99热网站在线观看| 亚洲欧洲日产国产| a 毛片基地| 亚洲人成网站在线观看播放| 国产精品无大码| 毛片一级片免费看久久久久| 99久久精品一区二区三区| 男女啪啪激烈高潮av片| 少妇猛男粗大的猛烈进出视频| 麻豆精品久久久久久蜜桃| 欧美激情国产日韩精品一区| 日日撸夜夜添| av电影中文网址| av在线app专区| 九九在线视频观看精品| 啦啦啦在线观看免费高清www| 中文乱码字字幕精品一区二区三区| 精品人妻在线不人妻| 69精品国产乱码久久久| 免费观看的影片在线观看| 久久久精品免费免费高清| 五月伊人婷婷丁香| 性色avwww在线观看| 大又大粗又爽又黄少妇毛片口| 午夜日本视频在线| 亚洲色图综合在线观看| 日本91视频免费播放| 午夜福利网站1000一区二区三区| 丰满迷人的少妇在线观看| 97在线人人人人妻| 交换朋友夫妻互换小说| 亚洲色图综合在线观看| 亚洲丝袜综合中文字幕| 黄片无遮挡物在线观看| 亚洲欧美清纯卡通| 国产伦理片在线播放av一区| 亚洲欧洲精品一区二区精品久久久 | 性色avwww在线观看| 日韩熟女老妇一区二区性免费视频| 精品少妇久久久久久888优播| a级片在线免费高清观看视频| 国产国拍精品亚洲av在线观看| tube8黄色片| 七月丁香在线播放| 一个人免费看片子| 久久久久视频综合| 中文字幕久久专区| 一边亲一边摸免费视频| 国产淫语在线视频| 午夜久久久在线观看| 久久久国产欧美日韩av| 日韩三级伦理在线观看| 欧美精品高潮呻吟av久久| 亚洲综合色惰| 少妇精品久久久久久久| 亚洲一级一片aⅴ在线观看| 久久久久久久久久久丰满| 五月伊人婷婷丁香| 内地一区二区视频在线| 日本vs欧美在线观看视频| 久久精品国产亚洲av天美| 久久久久精品久久久久真实原创| 老熟女久久久| 日韩大片免费观看网站| 欧美精品高潮呻吟av久久| 一级毛片 在线播放| 国产乱人偷精品视频| 亚洲av成人精品一二三区| 蜜桃久久精品国产亚洲av| 人人妻人人澡人人看| 国产爽快片一区二区三区| 最新中文字幕久久久久| 亚洲少妇的诱惑av| 十分钟在线观看高清视频www| 亚洲少妇的诱惑av| 国产精品人妻久久久影院| 亚洲国产毛片av蜜桃av| 亚洲国产欧美在线一区| 久久这里有精品视频免费| 高清av免费在线| 欧美一级a爱片免费观看看| 国产精品人妻久久久影院| 天天影视国产精品| √禁漫天堂资源中文www| 秋霞伦理黄片| 亚洲精品国产色婷婷电影| 蜜桃在线观看..| 久久影院123| 色5月婷婷丁香| 国产日韩一区二区三区精品不卡 | 777米奇影视久久| 精品亚洲成国产av| 大码成人一级视频| 在线观看免费视频网站a站| 国产精品欧美亚洲77777| 亚洲人成网站在线观看播放| 青青草视频在线视频观看| 亚洲在久久综合| 日韩成人av中文字幕在线观看| 不卡视频在线观看欧美| 亚洲高清免费不卡视频| 精品熟女少妇av免费看| 人妻少妇偷人精品九色| 免费高清在线观看视频在线观看| 欧美成人精品欧美一级黄| 国产一区二区在线观看日韩| av在线app专区| 各种免费的搞黄视频| 夜夜爽夜夜爽视频| 狂野欧美激情性xxxx在线观看| 欧美激情 高清一区二区三区| 综合色丁香网| 五月开心婷婷网| 王馨瑶露胸无遮挡在线观看| 你懂的网址亚洲精品在线观看| 久久国内精品自在自线图片| 一级,二级,三级黄色视频| 国产乱来视频区| 亚洲熟女精品中文字幕| 久久久久久久久久久丰满| 18禁裸乳无遮挡动漫免费视频| 欧美97在线视频| 一级毛片电影观看| 久久精品国产亚洲av涩爱| 亚洲色图综合在线观看| 插逼视频在线观看| 精品人妻熟女av久视频| 在线观看免费日韩欧美大片 | 亚洲精品乱久久久久久| 99久久精品一区二区三区| 制服人妻中文乱码| 日本黄色日本黄色录像| 性色avwww在线观看| 久久99一区二区三区| 久久久久国产精品人妻一区二区| 街头女战士在线观看网站| 中文字幕制服av| 99热网站在线观看| 在线观看免费视频网站a站| 久久ye,这里只有精品| 精品少妇黑人巨大在线播放| 99九九在线精品视频| 大话2 男鬼变身卡| 麻豆精品久久久久久蜜桃| 观看av在线不卡| 99久久人妻综合| 国产一区亚洲一区在线观看| 久久婷婷青草| 人人妻人人添人人爽欧美一区卜| 亚洲成人av在线免费| 女性被躁到高潮视频| 亚洲一区二区三区欧美精品| 亚洲av不卡在线观看| 草草在线视频免费看| 久久久国产欧美日韩av| 狂野欧美白嫩少妇大欣赏| 国产片内射在线| 女的被弄到高潮叫床怎么办| 一级毛片黄色毛片免费观看视频| 91久久精品国产一区二区成人| 日韩精品免费视频一区二区三区 | a 毛片基地| 国产欧美亚洲国产| 自拍欧美九色日韩亚洲蝌蚪91| 秋霞在线观看毛片| 最近中文字幕2019免费版| 18禁在线播放成人免费| 午夜精品国产一区二区电影| 亚洲第一区二区三区不卡| 欧美性感艳星| 男人添女人高潮全过程视频| 18在线观看网站| 大香蕉97超碰在线| 麻豆成人av视频| 99久久中文字幕三级久久日本| 啦啦啦啦在线视频资源| 全区人妻精品视频| 亚洲精品av麻豆狂野| 另类亚洲欧美激情| 亚洲国产av影院在线观看| 日韩一区二区三区影片| 久久人妻熟女aⅴ| 天美传媒精品一区二区| 日韩一区二区视频免费看| 国产精品人妻久久久影院| 精品人妻一区二区三区麻豆| 街头女战士在线观看网站| 黄色视频在线播放观看不卡| 欧美激情国产日韩精品一区| 久久人人爽人人爽人人片va| 国产爽快片一区二区三区| 视频在线观看一区二区三区| 毛片一级片免费看久久久久| 蜜桃在线观看..| 一边亲一边摸免费视频| 免费看av在线观看网站| 天天操日日干夜夜撸| 一二三四中文在线观看免费高清| 赤兔流量卡办理| 精品午夜福利在线看| 自线自在国产av| 如日韩欧美国产精品一区二区三区 | 日韩三级伦理在线观看| 亚洲国产成人一精品久久久| 国产永久视频网站| 午夜福利影视在线免费观看| 人妻制服诱惑在线中文字幕| 成人18禁高潮啪啪吃奶动态图 | 熟女电影av网| 亚洲色图综合在线观看| 欧美激情 高清一区二区三区| 少妇的逼好多水| av在线老鸭窝| 亚洲国产av影院在线观看| 久久精品国产亚洲网站| 夜夜看夜夜爽夜夜摸| 久久精品久久精品一区二区三区| 一级毛片aaaaaa免费看小| 久久久久视频综合| 国产日韩欧美亚洲二区| 免费观看a级毛片全部| 久久精品国产亚洲网站| 久久久亚洲精品成人影院| 大香蕉97超碰在线| 亚洲人成77777在线视频| 久久久久久久精品精品| 亚洲久久久国产精品| 多毛熟女@视频| 免费少妇av软件| 亚洲av男天堂| 纯流量卡能插随身wifi吗| 中文欧美无线码| 2022亚洲国产成人精品| 久久午夜综合久久蜜桃| 晚上一个人看的免费电影| 欧美精品一区二区免费开放| 欧美 日韩 精品 国产| 久久99蜜桃精品久久| 51国产日韩欧美| 在线看a的网站| 插阴视频在线观看视频| 夫妻性生交免费视频一级片| 国产高清有码在线观看视频| 国产成人一区二区在线| 男女国产视频网站| 日韩电影二区| 久久久久视频综合| av在线app专区| 一本色道久久久久久精品综合| 乱人伦中国视频| www.色视频.com| 丝瓜视频免费看黄片| av福利片在线| 91精品国产九色| 婷婷色综合大香蕉| 婷婷色av中文字幕| 国产精品无大码| 天堂俺去俺来也www色官网| 国产永久视频网站| 黄色视频在线播放观看不卡| 大话2 男鬼变身卡| 女性被躁到高潮视频| 制服丝袜香蕉在线| 国产精品熟女久久久久浪| 中文字幕人妻丝袜制服| 一级毛片我不卡| 国产精品久久久久久久电影| 99久久综合免费| 波野结衣二区三区在线| 亚洲婷婷狠狠爱综合网| 免费av不卡在线播放| av国产久精品久网站免费入址| 亚洲人成77777在线视频| 王馨瑶露胸无遮挡在线观看| 大陆偷拍与自拍| 亚洲国产最新在线播放| 欧美三级亚洲精品| 国内精品宾馆在线| 满18在线观看网站| 久久国内精品自在自线图片| 亚洲国产精品一区二区三区在线| 一本一本综合久久| 中文天堂在线官网| 97精品久久久久久久久久精品| 国产极品天堂在线| 麻豆乱淫一区二区| 久久热精品热| 久久精品国产亚洲网站| 最新的欧美精品一区二区| 韩国av在线不卡| 国产精品国产三级专区第一集| 国产视频内射| 国产一区二区三区av在线| 国产精品久久久久久久久免| 免费观看a级毛片全部| 特大巨黑吊av在线直播| 最新中文字幕久久久久| 亚洲不卡免费看| 国产一区二区在线观看av| av在线app专区| 亚洲精品乱久久久久久| 国产免费又黄又爽又色| 一级片'在线观看视频| 两个人免费观看高清视频| 中文字幕最新亚洲高清| 国产毛片在线视频| 亚洲精品久久午夜乱码| www.av在线官网国产| 中文字幕av电影在线播放| 国产精品一区二区在线观看99| videossex国产| 九九在线视频观看精品| 国产精品久久久久成人av| 成人毛片a级毛片在线播放| 人妻系列 视频| 3wmmmm亚洲av在线观看| 99热这里只有精品一区| 桃花免费在线播放| 少妇精品久久久久久久|