• <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)
    波多野结衣高清无吗| 可以在线观看毛片的网站| 国产av又大| 51午夜福利影视在线观看| 男女之事视频高清在线观看| 亚洲性夜色夜夜综合| 国产精品九九99| 国产欧美日韩精品亚洲av| 国产一卡二卡三卡精品| 大型av网站在线播放| 日本欧美视频一区| av有码第一页| 无人区码免费观看不卡| 亚洲在线自拍视频| 熟妇人妻久久中文字幕3abv| 伊人久久大香线蕉亚洲五| 日本 av在线| 亚洲无线在线观看| 国产精品 国内视频| 99香蕉大伊视频| 午夜成年电影在线免费观看| 欧美国产日韩亚洲一区| 国产区一区二久久| 操美女的视频在线观看| 18禁裸乳无遮挡免费网站照片 | 黄片大片在线免费观看| 俄罗斯特黄特色一大片| 国产精品免费一区二区三区在线| 日本欧美视频一区| 久久久久久人人人人人| 妹子高潮喷水视频| 精品久久久精品久久久| 久久国产亚洲av麻豆专区| 国产av一区在线观看免费| 久久性视频一级片| 久99久视频精品免费| 黄片大片在线免费观看| 首页视频小说图片口味搜索| 亚洲av片天天在线观看| 欧美一区二区精品小视频在线| 在线观看免费视频网站a站| 男女之事视频高清在线观看| 色尼玛亚洲综合影院| 曰老女人黄片| 亚洲激情在线av| 国产精品久久视频播放| 久久久久久久久免费视频了| 女人被躁到高潮嗷嗷叫费观| 午夜福利免费观看在线| 久久久久久亚洲精品国产蜜桃av| 成人国产综合亚洲| 久久精品国产清高在天天线| 欧美色视频一区免费| 日韩大尺度精品在线看网址 | 精品国产乱码久久久久久男人| 欧美成狂野欧美在线观看| 成人三级做爰电影| 欧美性长视频在线观看| 国产野战对白在线观看| videosex国产| 国产麻豆成人av免费视频| 九色国产91popny在线| 国产成+人综合+亚洲专区| 老司机靠b影院| 国产主播在线观看一区二区| 一级片免费观看大全| 18禁黄网站禁片午夜丰满| 国产av一区在线观看免费| 在线十欧美十亚洲十日本专区| 亚洲欧美精品综合一区二区三区| 午夜a级毛片| 香蕉丝袜av| 亚洲一卡2卡3卡4卡5卡精品中文| 国产高清videossex| 两性午夜刺激爽爽歪歪视频在线观看 | 亚洲成人久久性| 免费av毛片视频| 久久人妻熟女aⅴ| 国产成人一区二区三区免费视频网站| 啦啦啦观看免费观看视频高清 | 大香蕉久久成人网| 正在播放国产对白刺激| 亚洲午夜精品一区,二区,三区| 91成人精品电影| 亚洲精品美女久久av网站| 母亲3免费完整高清在线观看| 十分钟在线观看高清视频www| 久久 成人 亚洲| 亚洲成人免费电影在线观看| 岛国视频午夜一区免费看| 亚洲国产精品成人综合色| 亚洲免费av在线视频| 黄色毛片三级朝国网站| 亚洲精品中文字幕在线视频| 男女床上黄色一级片免费看| 国产精品二区激情视频| 啦啦啦 在线观看视频| 国产91精品成人一区二区三区| 精品国产美女av久久久久小说| 在线观看一区二区三区| 国产一区在线观看成人免费| 亚洲欧美日韩无卡精品| 神马国产精品三级电影在线观看 | 久久香蕉激情| 精品熟女少妇八av免费久了| 黄色片一级片一级黄色片| 久久这里只有精品19| 久久天躁狠狠躁夜夜2o2o| 久久久国产成人免费| 免费不卡黄色视频| 亚洲男人的天堂狠狠| 啦啦啦观看免费观看视频高清 | 人人妻人人爽人人添夜夜欢视频| 色精品久久人妻99蜜桃| 免费久久久久久久精品成人欧美视频| 欧美精品啪啪一区二区三区| 每晚都被弄得嗷嗷叫到高潮| 一级a爱片免费观看的视频| 国产又爽黄色视频| 黄片小视频在线播放| 老汉色av国产亚洲站长工具| 天堂动漫精品| 国产亚洲欧美在线一区二区| 啦啦啦 在线观看视频| 91精品三级在线观看| 国产一区二区三区综合在线观看| 天堂√8在线中文| 亚洲熟妇中文字幕五十中出| 亚洲狠狠婷婷综合久久图片| 午夜亚洲福利在线播放| 日本免费a在线| 精品免费久久久久久久清纯| 国产精品亚洲av一区麻豆| 国产亚洲精品综合一区在线观看 | 欧美日韩福利视频一区二区| 精品第一国产精品| 99久久久亚洲精品蜜臀av| 日本五十路高清| 国产精品,欧美在线| 久久久久久国产a免费观看| 两个人视频免费观看高清| 国产区一区二久久| 真人做人爱边吃奶动态| 婷婷精品国产亚洲av在线| 淫秽高清视频在线观看| 国产欧美日韩综合在线一区二区| 欧美乱码精品一区二区三区| 欧美日本亚洲视频在线播放| 国产av精品麻豆| 极品教师在线免费播放| 热99re8久久精品国产| 99久久综合精品五月天人人| 一二三四在线观看免费中文在| 日韩 欧美 亚洲 中文字幕| 精品免费久久久久久久清纯| 男人的好看免费观看在线视频 | 黄频高清免费视频| 一级,二级,三级黄色视频| 在线观看日韩欧美| 69精品国产乱码久久久| 欧美黄色淫秽网站| 两人在一起打扑克的视频| 精品午夜福利视频在线观看一区| 亚洲第一电影网av| 日日夜夜操网爽| 国产精品乱码一区二三区的特点 | 男女床上黄色一级片免费看| 欧美日韩乱码在线| 99香蕉大伊视频| 国产aⅴ精品一区二区三区波| 亚洲精品一卡2卡三卡4卡5卡| 婷婷六月久久综合丁香| 午夜福利视频1000在线观看 | 两个人免费观看高清视频| cao死你这个sao货| 国产av一区在线观看免费| 午夜两性在线视频| 亚洲精品粉嫩美女一区| 两人在一起打扑克的视频| 欧美 亚洲 国产 日韩一| 日韩成人在线观看一区二区三区| 欧美成人性av电影在线观看| 一区在线观看完整版| 亚洲va日本ⅴa欧美va伊人久久| 不卡av一区二区三区| 一进一出抽搐gif免费好疼| 国产91精品成人一区二区三区| 亚洲aⅴ乱码一区二区在线播放 | 午夜a级毛片| 亚洲av熟女| 性欧美人与动物交配| 亚洲国产欧美网| 成人国产一区最新在线观看| 久久精品影院6| 男人操女人黄网站| 国产免费男女视频| АⅤ资源中文在线天堂| 欧美日韩亚洲国产一区二区在线观看| 97碰自拍视频| 国产亚洲av嫩草精品影院| 国产熟女xx| 国产精品久久久久久精品电影 | 人妻丰满熟妇av一区二区三区| 天天躁夜夜躁狠狠躁躁| 日本精品一区二区三区蜜桃| 又大又爽又粗| 国产亚洲欧美98| 欧美最黄视频在线播放免费| 一边摸一边抽搐一进一出视频| 国产三级在线视频| 国产成人精品无人区| 精品久久久久久久久久免费视频| av欧美777| 欧美色视频一区免费| 不卡av一区二区三区| 日本精品一区二区三区蜜桃| 欧美中文综合在线视频| 久久人人精品亚洲av| 啪啪无遮挡十八禁网站| netflix在线观看网站| 他把我摸到了高潮在线观看| 久久久国产成人精品二区| 黄网站色视频无遮挡免费观看| 国产精品av久久久久免费| 亚洲欧洲精品一区二区精品久久久| 亚洲全国av大片| 色播亚洲综合网| 国产99久久九九免费精品| 国产又爽黄色视频| 欧美色欧美亚洲另类二区 | 色婷婷久久久亚洲欧美| 99在线人妻在线中文字幕| 亚洲av电影不卡..在线观看| 国产精品久久久久久亚洲av鲁大| 一区在线观看完整版| 成人国产综合亚洲| 欧美激情高清一区二区三区| 中文字幕av电影在线播放| 久久狼人影院| 操美女的视频在线观看| 欧美一区二区精品小视频在线| 久久久久久久久久久久大奶| 两性午夜刺激爽爽歪歪视频在线观看 | 国产精品乱码一区二三区的特点 | 欧美性长视频在线观看| av有码第一页| 亚洲情色 制服丝袜| 亚洲美女黄片视频| 国产精品秋霞免费鲁丝片| 在线观看66精品国产| 亚洲九九香蕉| 一级毛片精品| 中文字幕人妻丝袜一区二区| 欧美另类亚洲清纯唯美| 涩涩av久久男人的天堂| av福利片在线| 国产一区二区三区视频了| 高清黄色对白视频在线免费看| 啦啦啦观看免费观看视频高清 | 精品国内亚洲2022精品成人| 18禁国产床啪视频网站| 91麻豆av在线| 亚洲伊人色综图| 男人的好看免费观看在线视频 | 色综合婷婷激情| 亚洲成人国产一区在线观看| svipshipincom国产片| 色在线成人网| 国内精品久久久久久久电影| 免费在线观看影片大全网站| 禁无遮挡网站| 精品久久久精品久久久| 在线观看一区二区三区| 99国产精品一区二区蜜桃av| 精品久久久久久成人av| 久久久久国产精品人妻aⅴ院| 国产成人系列免费观看| 国产精品久久久久久人妻精品电影| 国产av一区在线观看免费| 亚洲精品在线美女| 成人免费观看视频高清| 国产精品亚洲av一区麻豆| 免费无遮挡裸体视频| 久久中文看片网| 国产熟女午夜一区二区三区| 精品高清国产在线一区| 男女午夜视频在线观看| 欧美在线一区亚洲| 国产av一区在线观看免费| 999精品在线视频| 淫秽高清视频在线观看| 欧美中文日本在线观看视频| 侵犯人妻中文字幕一二三四区| 欧美黄色片欧美黄色片| 国产成人av教育| 9色porny在线观看| 日本五十路高清| 啪啪无遮挡十八禁网站| 精品卡一卡二卡四卡免费| 国产欧美日韩精品亚洲av| 级片在线观看| 精品国产美女av久久久久小说| 成年女人毛片免费观看观看9| 午夜福利高清视频| 国产av又大| 黑人巨大精品欧美一区二区mp4| 最近最新中文字幕大全免费视频| 少妇熟女aⅴ在线视频| 久久久久久大精品| 久久 成人 亚洲| 中文字幕人妻丝袜一区二区| 91老司机精品| 黄片小视频在线播放| svipshipincom国产片| 国产真人三级小视频在线观看| 极品人妻少妇av视频| 国产欧美日韩一区二区三区在线| 亚洲人成电影免费在线| 12—13女人毛片做爰片一| 午夜免费激情av| av免费在线观看网站| 日本a在线网址| 91九色精品人成在线观看| 变态另类丝袜制服| 窝窝影院91人妻| 天堂动漫精品| 日韩大尺度精品在线看网址 | 黄色毛片三级朝国网站| 久久久久久国产a免费观看| 国产人伦9x9x在线观看| 丰满的人妻完整版| 色综合欧美亚洲国产小说| 婷婷精品国产亚洲av在线| 一进一出抽搐动态| 嫩草影视91久久| 69精品国产乱码久久久| 又紧又爽又黄一区二区| 亚洲一码二码三码区别大吗| 中文字幕精品免费在线观看视频| 免费看美女性在线毛片视频| 美国免费a级毛片| АⅤ资源中文在线天堂| 午夜福利成人在线免费观看| 成人av一区二区三区在线看| 色精品久久人妻99蜜桃| 亚洲专区字幕在线| 在线免费观看的www视频| 首页视频小说图片口味搜索| 精品国产亚洲在线| 国产成人精品无人区| 欧美日本视频| 免费av毛片视频| 99久久国产精品久久久| 在线观看www视频免费| 狠狠狠狠99中文字幕| 国产99久久九九免费精品| 亚洲精品久久成人aⅴ小说| 久久久久国产精品人妻aⅴ院| 久久久久久国产a免费观看| 亚洲精品国产一区二区精华液| 动漫黄色视频在线观看| 99国产综合亚洲精品| 最新美女视频免费是黄的| 国产亚洲精品第一综合不卡| 久久性视频一级片| 岛国在线观看网站| 久久久久久国产a免费观看| 国产97色在线日韩免费| 中文亚洲av片在线观看爽| 亚洲狠狠婷婷综合久久图片| 国内精品久久久久精免费| 亚洲精品一区av在线观看| 日韩大码丰满熟妇| 黄色毛片三级朝国网站| 午夜福利欧美成人| 波多野结衣一区麻豆| 熟妇人妻久久中文字幕3abv| 亚洲久久久国产精品| 久久久久国产一级毛片高清牌| 亚洲国产欧美日韩在线播放| 两个人视频免费观看高清| 精品国内亚洲2022精品成人| 一区福利在线观看| 免费在线观看黄色视频的| 9热在线视频观看99| 90打野战视频偷拍视频| www.精华液| 久久人人97超碰香蕉20202| 亚洲精品中文字幕一二三四区| xxx96com| 97人妻精品一区二区三区麻豆 | 亚洲精品美女久久久久99蜜臀| 大码成人一级视频| 妹子高潮喷水视频| 大型av网站在线播放| 啦啦啦韩国在线观看视频| 国产又爽黄色视频| 在线观看免费日韩欧美大片| 国产精品野战在线观看| 欧洲精品卡2卡3卡4卡5卡区| 侵犯人妻中文字幕一二三四区| 天天添夜夜摸| 国产亚洲欧美精品永久| 悠悠久久av| 亚洲av第一区精品v没综合| 一级毛片精品| 一区二区日韩欧美中文字幕| 最新在线观看一区二区三区| 国产精品一区二区精品视频观看| 中文字幕人妻丝袜一区二区| 桃色一区二区三区在线观看| 精品国产亚洲在线| 亚洲精品中文字幕一二三四区| 亚洲精品av麻豆狂野| 欧美在线黄色| 97超级碰碰碰精品色视频在线观看| 97人妻天天添夜夜摸| 露出奶头的视频| 女人被狂操c到高潮| 欧美精品亚洲一区二区| videosex国产| 久久人妻av系列| 黄色 视频免费看| 成人精品一区二区免费| 国产亚洲精品久久久久久毛片| 亚洲精品美女久久久久99蜜臀| 国产精华一区二区三区| xxx96com| 无遮挡黄片免费观看| 久9热在线精品视频| 超碰成人久久| АⅤ资源中文在线天堂| 免费不卡黄色视频| 男人的好看免费观看在线视频 | 久久 成人 亚洲| 亚洲久久久国产精品| 精品久久久久久成人av| 黄网站色视频无遮挡免费观看| 久久久久久久精品吃奶| 在线国产一区二区在线| 丝袜美足系列| 午夜久久久在线观看| 欧美一区二区精品小视频在线| 18禁裸乳无遮挡免费网站照片 | 亚洲av电影不卡..在线观看| 欧美日本亚洲视频在线播放| 国产国语露脸激情在线看| 一区二区三区激情视频| 亚洲国产欧美一区二区综合| 窝窝影院91人妻| 男女床上黄色一级片免费看| 在线播放国产精品三级| 国产精品香港三级国产av潘金莲| 国产成人一区二区三区免费视频网站| 老汉色∧v一级毛片| 午夜福利视频1000在线观看 | 十八禁人妻一区二区| 亚洲自偷自拍图片 自拍| 国产精品自产拍在线观看55亚洲| 久久 成人 亚洲| 久久久水蜜桃国产精品网| av天堂久久9| 日韩欧美一区二区三区在线观看| 女人被狂操c到高潮| 精品人妻1区二区| 久久久久国内视频| 国产精品免费视频内射| 人成视频在线观看免费观看| 天天一区二区日本电影三级 | 在线十欧美十亚洲十日本专区| 亚洲九九香蕉| 又黄又粗又硬又大视频| 极品教师在线免费播放| 一区二区三区国产精品乱码| 午夜福利免费观看在线| 亚洲国产日韩欧美精品在线观看 | 一区二区日韩欧美中文字幕| 精品日产1卡2卡| 无遮挡黄片免费观看| e午夜精品久久久久久久| 此物有八面人人有两片| 波多野结衣一区麻豆| 999久久久精品免费观看国产| 久久久久九九精品影院| 国语自产精品视频在线第100页| 国产成人精品无人区| 不卡av一区二区三区| 免费女性裸体啪啪无遮挡网站| 在线观看舔阴道视频| 久久久精品欧美日韩精品| 免费一级毛片在线播放高清视频 | 一区二区三区国产精品乱码| 国产精品九九99| 亚洲 欧美一区二区三区| 欧美黑人欧美精品刺激| 最新美女视频免费是黄的| 久久天堂一区二区三区四区| 亚洲精品国产色婷婷电影| 国产高清激情床上av| 欧洲精品卡2卡3卡4卡5卡区| 久久精品aⅴ一区二区三区四区| 美女扒开内裤让男人捅视频| 日韩精品免费视频一区二区三区| 久久久久国产一级毛片高清牌| 天天躁狠狠躁夜夜躁狠狠躁| 狂野欧美激情性xxxx| 一级a爱片免费观看的视频| 精品久久蜜臀av无| 99re在线观看精品视频| 亚洲av电影不卡..在线观看| 久久狼人影院| svipshipincom国产片| 久久精品aⅴ一区二区三区四区| 国产成人啪精品午夜网站| 在线观看免费视频网站a站| 亚洲avbb在线观看| 男女下面进入的视频免费午夜 | 久久性视频一级片| 国产午夜福利久久久久久| 久久精品91无色码中文字幕| av免费在线观看网站| 国产精品 国内视频| 97人妻天天添夜夜摸| a级毛片在线看网站| 久久国产精品影院| 中文字幕最新亚洲高清| 国产av一区二区精品久久| 国产av一区在线观看免费| 久久精品国产清高在天天线| av天堂久久9| 亚洲av美国av| 中文字幕久久专区| 美女高潮到喷水免费观看| 波多野结衣巨乳人妻| 久久久国产精品麻豆| 精品卡一卡二卡四卡免费| 丝袜美腿诱惑在线| av电影中文网址| 日日干狠狠操夜夜爽| 国产乱人伦免费视频| 这个男人来自地球电影免费观看| 激情视频va一区二区三区| 好男人在线观看高清免费视频 | 婷婷精品国产亚洲av在线| aaaaa片日本免费| 欧美日本亚洲视频在线播放| 女人被狂操c到高潮| 国产av一区二区精品久久| 色综合婷婷激情| 欧美成人一区二区免费高清观看 | 日韩欧美在线二视频| 国产主播在线观看一区二区| 国产片内射在线| 亚洲熟妇中文字幕五十中出| 色婷婷久久久亚洲欧美| 亚洲人成电影免费在线| 国产av一区二区精品久久| 在线国产一区二区在线| 十八禁人妻一区二区| 村上凉子中文字幕在线| 亚洲欧美日韩高清在线视频| 亚洲七黄色美女视频| 一区二区三区高清视频在线| 亚洲欧美精品综合久久99| 在线天堂中文资源库| 久久久久国产精品人妻aⅴ院| 欧美日韩福利视频一区二区| avwww免费| 色综合婷婷激情| 亚洲人成电影观看| 美女大奶头视频| 国产激情欧美一区二区| 欧美在线一区亚洲| 波多野结衣高清无吗| 91大片在线观看| 搡老妇女老女人老熟妇| 女人被躁到高潮嗷嗷叫费观| 日本三级黄在线观看| 国产av精品麻豆| 国产99白浆流出| 校园春色视频在线观看| 国产亚洲欧美在线一区二区| 午夜激情av网站| 日本撒尿小便嘘嘘汇集6| 18禁国产床啪视频网站| 久久精品国产综合久久久| 久久久久九九精品影院| 一级a爱片免费观看的视频| 亚洲精品av麻豆狂野| 18美女黄网站色大片免费观看| 久久人人精品亚洲av| 欧美最黄视频在线播放免费| 欧美激情极品国产一区二区三区| 在线国产一区二区在线| 大型av网站在线播放| 黄色片一级片一级黄色片| 韩国精品一区二区三区| 国产成人啪精品午夜网站| av视频免费观看在线观看| 如日韩欧美国产精品一区二区三区| 激情在线观看视频在线高清| 给我免费播放毛片高清在线观看| 人人妻人人澡欧美一区二区 | 好男人电影高清在线观看| 国产成人欧美在线观看| 久久天堂一区二区三区四区| 国产激情欧美一区二区| 黄频高清免费视频| 亚洲成人免费电影在线观看| 精品一区二区三区四区五区乱码| 欧美av亚洲av综合av国产av| 级片在线观看| 欧美激情极品国产一区二区三区| 女人爽到高潮嗷嗷叫在线视频| 免费搜索国产男女视频|