王爽
(西安體育學(xué)院網(wǎng)絡(luò)管理中心,陜西西安710068)
大型運(yùn)動(dòng)會(huì)在全國(guó)乃至全世界都有著重要的影響,但是對(duì)于運(yùn)動(dòng)會(huì)的管理工作卻是一件比較復(fù)雜的事情。如果采用人工處理的方法進(jìn)行運(yùn)動(dòng)會(huì)數(shù)據(jù)輸入、處理和發(fā)布,不僅速度慢、效率低、容易出錯(cuò),而且也不便于與當(dāng)前運(yùn)動(dòng)會(huì)的外圍顯示系統(tǒng)和綜合信息發(fā)布系統(tǒng)進(jìn)行數(shù)據(jù)共享和信息發(fā)布,迫切需要開(kāi)發(fā)一種在網(wǎng)絡(luò)環(huán)境下運(yùn)行的,符合實(shí)際需要的運(yùn)動(dòng)會(huì)信息管理系統(tǒng)[1]。因此,利用計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通信技術(shù)、數(shù)據(jù)庫(kù)技術(shù)等實(shí)現(xiàn)運(yùn)動(dòng)會(huì)信息的管理,對(duì)于減輕繁重的手工勞動(dòng),提高工作效率和管理水平,實(shí)現(xiàn)運(yùn)動(dòng)會(huì)管理的信息化和現(xiàn)代化具有重要的現(xiàn)實(shí)意義。傳統(tǒng)的開(kāi)發(fā)方法難以快速開(kāi)發(fā)出功能強(qiáng)大、系統(tǒng)可擴(kuò)展性強(qiáng)的基于Web的應(yīng)用系統(tǒng)。而一個(gè)優(yōu)秀成熟的框架既可以提高開(kāi)發(fā)效率,又可以保障系統(tǒng)質(zhì)量。本文將ASSH(AJAX+Struts+Spring+Hibernate)框架引入了運(yùn)動(dòng)會(huì)信息管理系統(tǒng)應(yīng)用的開(kāi)發(fā)中,對(duì)整合的架構(gòu)應(yīng)用進(jìn)行具體的研究。
系統(tǒng)在物理上由3部分組成,第1部分:前端具有WLAN功能的手持PDA或計(jì)算機(jī),以便通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)與數(shù)據(jù)處理計(jì)算機(jī)進(jìn)行通信,第2部分:數(shù)據(jù)處理計(jì)算機(jī),整個(gè)系統(tǒng)的核心部件,包括了所有基礎(chǔ)信息處理的功能。第3部分:數(shù)據(jù)庫(kù)服務(wù)器,用于存儲(chǔ)各種基礎(chǔ)信息[2]。
本系統(tǒng)選用J2EE平臺(tái)。J2EE的跨平臺(tái)操作性很強(qiáng),可搭建具有可伸縮性、靈活性、易維護(hù)性的系統(tǒng)。系統(tǒng)開(kāi)發(fā)基于B/S的三層體系結(jié)構(gòu),分別是:表示層,位于最上層,離用戶(hù)最近,用于顯示數(shù)據(jù)和接收用戶(hù)輸入的數(shù)據(jù),為用戶(hù)提供一種交互式操作的界面。業(yè)務(wù)邏輯層:負(fù)責(zé)處理用戶(hù)輸入的信息,或者是將這些信息發(fā)送給數(shù)據(jù)訪(fǎng)問(wèn)層進(jìn)行保存,或者是調(diào)用數(shù)據(jù)訪(fǎng)問(wèn)層中的函數(shù)再次讀出這些數(shù)據(jù),業(yè)務(wù)邏輯層也可以包括一些“業(yè)務(wù)邏輯”描述代碼。持久層:實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作。由于采用了三層架構(gòu),使得數(shù)據(jù)的存儲(chǔ)在后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上完成,業(yè)務(wù)功能由成績(jī)處理計(jì)算機(jī)即應(yīng)用程序服務(wù)器完成。采用該模式,客戶(hù)端不直接與數(shù)據(jù)庫(kù)服務(wù)器相連接,提高了數(shù)據(jù)庫(kù)的安全性。更重要的是,對(duì)體育比賽而言,當(dāng)競(jìng)賽項(xiàng)目的業(yè)務(wù)邏輯發(fā)生微調(diào)時(shí),只需修改成績(jī)處理計(jì)算機(jī)上的程序即可,而不需要對(duì)客戶(hù)端進(jìn)行任何改動(dòng)。
運(yùn)動(dòng)會(huì)信息管理系統(tǒng)涵蓋以下子系統(tǒng):
1)系統(tǒng)維護(hù)子系統(tǒng)是公用子系統(tǒng),負(fù)責(zé)為其它子系統(tǒng)提供公共信息,管理用戶(hù)、設(shè)置用戶(hù)權(quán)限和維護(hù)系統(tǒng)日志。
2)賽事管理子系統(tǒng)是基本子系統(tǒng),負(fù)責(zé)為其它子系統(tǒng)提供運(yùn)動(dòng)會(huì)信息和比賽項(xiàng)目信息。其中包括注冊(cè)系子統(tǒng),賽制設(shè)置子系統(tǒng),場(chǎng)館管理子系統(tǒng),比賽主計(jì)劃子系統(tǒng),賽程編排子系統(tǒng)[3]。
3)運(yùn)動(dòng)會(huì)成績(jī)系統(tǒng)運(yùn)動(dòng)會(huì)成績(jī)系統(tǒng)是運(yùn)動(dòng)會(huì)的核心系統(tǒng),包括:中心成績(jī)系統(tǒng)、場(chǎng)館成績(jī)系統(tǒng)、現(xiàn)場(chǎng)計(jì)時(shí)記分系統(tǒng)。
4)運(yùn)動(dòng)會(huì)信息發(fā)布子系統(tǒng)運(yùn)動(dòng)會(huì)信息發(fā)布系統(tǒng)是運(yùn)動(dòng)會(huì)對(duì)外發(fā)布的窗口將涵蓋:
①信息網(wǎng)站;②電視轉(zhuǎn)播字幕系統(tǒng);③打印分發(fā)系統(tǒng);④現(xiàn)場(chǎng)LED顯示屏系統(tǒng)。
AJAX指異步JavaScript及XML,借助于AJAX,可以在用戶(hù)單擊按鈕或鏈接時(shí),利用JavaScript和DHTML立即更新用戶(hù)界面,并向服務(wù)器發(fā)出異步請(qǐng)求,以執(zhí)行更新或查詢(xún)。當(dāng)請(qǐng)求返回時(shí),就可以使用JavaScript和CSS相應(yīng)地更新用戶(hù)界面,而不是刷新整個(gè)頁(yè)面,這種特性決定了它適用于需要與服務(wù)端頻繁交互,操作即時(shí)響應(yīng)要求高的環(huán)境。采用AJAX技術(shù)可以減少數(shù)據(jù)傳輸量以及加快響應(yīng)速度[4]。
Struts框架,它是一個(gè)完美的MVC實(shí)現(xiàn),它有一個(gè)中央控制類(lèi)(一個(gè)Servlet),針對(duì)不同的業(yè)務(wù),用Action類(lèi)負(fù)責(zé)頁(yè)面跳轉(zhuǎn)和后臺(tái)邏輯運(yùn)算,Jsp頁(yè)面負(fù)責(zé)數(shù)據(jù)的輸入和輸出顯示,F(xiàn)orm類(lèi)負(fù)責(zé)傳遞Action和Jsp中間的數(shù)據(jù)。Jsp中可以使用Struts框架提供的一組標(biāo)簽,就像使用html標(biāo)簽一樣簡(jiǎn)單,但是可以完成非常復(fù)雜的邏輯。但如果把運(yùn)算邏輯都放在Struts的Action類(lèi)里將使得Action類(lèi)復(fù)用度低和邏輯混亂,所以通常會(huì)把整個(gè)Web應(yīng)用程序分為3層,Struts負(fù)責(zé)表示層,它調(diào)用業(yè)務(wù)邏輯層完成運(yùn)算邏輯,業(yè)務(wù)邏輯層再調(diào)用持久層完成數(shù)據(jù)庫(kù)的讀寫(xiě)。
Struts調(diào)用業(yè)務(wù)類(lèi)時(shí),需要新建一個(gè)業(yè)務(wù)類(lèi)出來(lái),然后使用,業(yè)務(wù)邏輯層需要調(diào)用持久層的類(lèi),也需要新建一個(gè)持久層類(lèi)出來(lái)用。簡(jiǎn)單的說(shuō),就是調(diào)用者依賴(lài)被調(diào)用者,它們之間形成了強(qiáng)耦合,如果想在其他地方復(fù)用某個(gè)類(lèi),則這個(gè)類(lèi)依賴(lài)的其他類(lèi)也需要包含。程序就變得很混亂,每個(gè)類(lèi)互相依賴(lài)互相調(diào)用,復(fù)用度極低。如果一個(gè)類(lèi)做了修改,則依賴(lài)它的很多類(lèi)都會(huì)受到牽連。
Spring框架,它的作用就是完全解耦類(lèi)之間的依賴(lài)關(guān)系,一個(gè)類(lèi)如果要依賴(lài)什么,那就是一個(gè)接口。只要有一個(gè)實(shí)現(xiàn)了這個(gè)接口的類(lèi),就可以輕松的通過(guò)xml配置文件把實(shí)現(xiàn)類(lèi)注射到調(diào)用接口的那個(gè)類(lèi)里。所有類(lèi)之間的這種依賴(lài)關(guān)系就完全通過(guò)配置文件的方式替代了。所以Spring框架最核心的就是依賴(lài)注射和控制反轉(zhuǎn)。
Hibernate框架,可以創(chuàng)建一系列的持久化類(lèi),每個(gè)類(lèi)的屬性都可以簡(jiǎn)單的看做和一張數(shù)據(jù)庫(kù)表的屬性一一對(duì)應(yīng),也可以實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)的各種表間關(guān)聯(lián)的對(duì)應(yīng)。當(dāng)需要相關(guān)操作時(shí),不用再關(guān)注數(shù)據(jù)庫(kù)表,不用再去一行行的查詢(xún)數(shù)據(jù)庫(kù),只需要持久化類(lèi)就可以完成增刪改查的功能。使軟件開(kāi)發(fā)真正面向?qū)ο螅皇敲嫦蚧靵y的代碼,使用Hibernate可以比JDBC方式減少很多的編程量[5]。
另外,由于Spring使用的依賴(lài)注射以及AOP(面向方面編程),所以它的這種內(nèi)部模式非常優(yōu)秀,同時(shí)為了很好的處理事物,Spring集成了Hibernate,使事物管理從Hibernate的持久層提升到了業(yè)務(wù)層,使用更加方便。
現(xiàn)在的架構(gòu)是,Struts負(fù)責(zé)表示層,AJAX則作為Struts在表示層上的補(bǔ)充,Spring負(fù)責(zé)中間的業(yè)務(wù)層,Hibernate負(fù)責(zé)持久層,形成了ASSH框架,其架構(gòu)如圖1所示。采用上述架構(gòu),不僅實(shí)現(xiàn)了視圖、控制器與模型的徹底分離,而且還實(shí)現(xiàn)了表示層、業(yè)務(wù)邏輯層與持久層的分離。這樣無(wú)論前端如何變化,模型層只需很少的改動(dòng),并且數(shù)據(jù)庫(kù)的變化也不會(huì)對(duì)前端有所影響。系統(tǒng)采用此架構(gòu)開(kāi)發(fā),無(wú)論在整體架構(gòu)還是在局部的復(fù)雜業(yè)務(wù)模型中都有了更低的耦合性,而且提高了靈活性與可維護(hù)性、可擴(kuò)展性及可重用性。而且由于不同層之間耦合度小,有利于團(tuán)隊(duì)成員并行工作,大大提高了開(kāi)發(fā)效率。在性能速度、交互性和體驗(yàn)上也有很大的改善,這樣便消除了單獨(dú)使用這些框架開(kāi)發(fā)系統(tǒng)的不足[6]。
圖1 ASSH框架架構(gòu)圖Fig.1Frame structure of ASSH
Struts、Spring、Hibernate的優(yōu)勢(shì)分別在于J2EE的表示層,業(yè)務(wù)邏輯層,持久層。本系統(tǒng)中集成框架的具體做法是用面向?qū)ο蟮姆治龇椒ǜ鶕?jù)需求來(lái)提出一個(gè)模型,將這些模型采用Java語(yǔ)言來(lái)實(shí)現(xiàn)出基本的Java對(duì)象,然后寫(xiě)出基本的DAO(數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象)接口,并給出Hibernate的DAO實(shí)現(xiàn),這樣就可以通過(guò)Hibernate框架實(shí)現(xiàn)的DAO類(lèi)來(lái)實(shí)現(xiàn)Java類(lèi)與數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換和訪(fǎng)問(wèn),然后由Spring來(lái)完成業(yè)務(wù)邏輯處理。在此架構(gòu)中,由Struts負(fù)責(zé)降低系統(tǒng)總架構(gòu)的耦合性,由Spring負(fù)責(zé)復(fù)雜的業(yè)務(wù)邏輯處理,由Hibernate負(fù)責(zé)降低模型部分的開(kāi)發(fā)難度,由AJAX負(fù)責(zé)在頁(yè)面進(jìn)行監(jiān)聽(tīng)和異步處理。
系統(tǒng)的基本業(yè)務(wù)流程是:在表示層中,首先通過(guò)AJAX和JSP頁(yè)面實(shí)現(xiàn)交互界面,負(fù)責(zé)傳送請(qǐng)求(Request)和接收響應(yīng)(Response),然后Struts根據(jù)配置文件(Struts-config.xml)將ActionServlet接收到的Request委派給相應(yīng)的Action處理。在業(yè)務(wù)邏輯層中,管理服務(wù)組件的Spring IOC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型組件和該組件的協(xié)作對(duì)象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供事務(wù)處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。而在持久層中,則依賴(lài)于Hibernate的對(duì)象化映射和數(shù)據(jù)庫(kù)交互,處理DAO組件請(qǐng)求的數(shù)據(jù),并返回處理結(jié)果。
本系統(tǒng)使用Hibernate框架實(shí)現(xiàn)應(yīng)用的持久層,封裝訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)細(xì)節(jié),并向上層提供面向?qū)ο蟮臄?shù)據(jù)訪(fǎng)問(wèn)API。創(chuàng)建Hibernate框架為應(yīng)用服務(wù),分為如下3個(gè)步驟:1)創(chuàng)建O/R Mapping(對(duì)象關(guān)系映射)文件;2)創(chuàng)建Hibernate配置文件;3)通過(guò)Hibernate API實(shí)現(xiàn)具體的DAO數(shù)據(jù)訪(fǎng)問(wèn)。
Hibernate通過(guò)O/R映射文件將對(duì)象與關(guān)系型數(shù)據(jù)相關(guān)聯(lián),因此需要編寫(xiě)和數(shù)據(jù)庫(kù)表相對(duì)應(yīng)的Java持久化類(lèi)以及對(duì)應(yīng)的映射文件[7]。有了Java持久化類(lèi)后就可以在此基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)訪(fǎng)問(wèn)類(lèi)。在Spring框架中,數(shù)據(jù)訪(fǎng)問(wèn)類(lèi)可以從輔助類(lèi)HibernateDaoSupport繼承,這極大地方便了Hibernate框架在Spring中的使用。以下是用戶(hù)管理模塊中,Hibernate映射文件User.hbm.xml的部分代碼。
<class
name=“com.sun.Hibernate.system.User”
table=“SYSTEM_USER”>
<id name=“id”type=“l(fā)ong”column=“ID”>
<generator class=“sequence”>
<param name=“sequence”>seq_user</param>
</generator>
</id>
<property name=“name”type=“java.lang.String”column=“NAME”length=“10”/>
<propertyname=“password”type=“java.lang.String”column=“PASSWORD”length=“10”/>
……
<many-to-one name=“role”
class=“com.sun.Hibernate.system.Role”insert=“false”
update=“false”>
<column name=“ROLEID”/>
</many-to-one>
具體的Hibernate數(shù)據(jù)源、Session工廠(chǎng)、事務(wù)管理、緩沖連接池等功能都由業(yè)務(wù)邏輯層的Spring容器提供。
業(yè)務(wù)邏輯層由Spring框架支持,提供了處理業(yè)務(wù)邏輯的服務(wù)組件。開(kāi)發(fā)者需要對(duì)業(yè)務(wù)對(duì)象建模,抽象出業(yè)務(wù)模型并封裝在模型組件中。由于數(shù)據(jù)持久層實(shí)現(xiàn)了Java持久化類(lèi)并且封裝了DAO,因此可以在模型組件中方便地調(diào)用DAO組件來(lái)存取數(shù)據(jù)[8]。Spring的IoC容器負(fù)責(zé)統(tǒng)一管理模型組件和DAO組件以及Spring所提供的事務(wù)處理、緩沖連接池等服務(wù)組件。
例如:在用戶(hù)管理模塊中,通過(guò)業(yè)務(wù)建模創(chuàng)建了用戶(hù)模型UserService類(lèi),封裝了對(duì)用戶(hù)的權(quán)限管理等功能。UserService類(lèi)通過(guò)調(diào)用數(shù)據(jù)訪(fǎng)問(wèn)類(lèi)UserDao實(shí)現(xiàn)對(duì)用戶(hù)數(shù)據(jù)的操作。這些組件的關(guān)系將通過(guò)配置Spring框架的applicationContext.xml聯(lián)系起來(lái),配置文件的部分代碼如下:
<beanid=“userDAO”class=“com.sun.Spring.system.UserDAOImpl”>
<property name=“sessionFactory”><ref local=“sessionFactory”/></property>
</bean>
<bean id="userDAOProxy"
class=“org.Springframework.transaction.interceptor.
TransactionProxyFactoryBean”>
<property name=“transactionManager”><ref bean=“transactionManager”/></property>
<property name=“target”><ref local=“userDAO”/></property>
……
</bean>
<bean name=“/user”class=“com.sun.Struts.actions.system.UserAction”singleton=“false”>
<propertyname=“userDAO”><refbean=“userDAOProxy”/></property>
……
</bean>
本系統(tǒng)中表示層主要由Struts框架,AJAX技術(shù)實(shí)現(xiàn),設(shè)計(jì)嚴(yán)格依照MVC模式,其中V(視圖層)通過(guò)Jsp頁(yè)面實(shí)現(xiàn),C(控制層)由Servlet實(shí)現(xiàn),M(模型層)則由Action及AJAX后臺(tái)程序?qū)崿F(xiàn),下面舉系統(tǒng)中的一個(gè)例子來(lái)說(shuō)明Struts和AJAX在表示層的應(yīng)用。在管理人員添加頁(yè)面中,當(dāng)用戶(hù)在Jsp頁(yè)面中填寫(xiě)完人員姓名、密碼等信息后,JavaScript中相應(yīng)的XMLHttpRequest回調(diào)函數(shù)將異步派發(fā)XMLHttpRequest請(qǐng)求,后臺(tái)將根據(jù)提供的姓名、密碼從數(shù)據(jù)庫(kù)相應(yīng)表中得到該人員個(gè)人基本信息。隨后服務(wù)器響應(yīng)會(huì)傳到瀏覽器,在解析請(qǐng)求參數(shù)后,Servlet執(zhí)行必需的應(yīng)用邏輯,將響應(yīng)信息封裝到XML中,并將它寫(xiě)回HttpServletResponse??蛻?hù)端注冊(cè)在XMLHttpRequest上的回調(diào)函數(shù)現(xiàn)在會(huì)被回調(diào),用以處理由服務(wù)器返回的數(shù)據(jù),并通過(guò)更新用戶(hù)界面來(lái)響應(yīng)服務(wù)器傳輸過(guò)來(lái)的數(shù)據(jù)[9]。信息完成后提交時(shí),所有需要保存的數(shù)據(jù)通過(guò)表單提交給相應(yīng)的Servlet。由其根據(jù)配置文件調(diào)用相應(yīng)Action進(jìn)行后續(xù)處理。這樣做的好處是使視圖層、控制層、模型層完全分離,同時(shí)加入了AJAX的異步處理功能,使系統(tǒng)無(wú)論是在安全性、可擴(kuò)展性還是交互性上較之普通設(shè)計(jì)都有明顯提高。
控制器是按Struts-config.xml文件中的配置來(lái)決定業(yè)務(wù)流的轉(zhuǎn)向,開(kāi)發(fā)人員在業(yè)務(wù)流控制方面的主要工作是對(duì)Strutsconfig.xml進(jìn)行配置[10],Struts-config.xml部分代碼如下:
<form-bean name=“userForm”
type=“com.sun.Struts.forms.system.UserForm”/>
</form-beans>
<global-forwards>
<forward name=“index”path=“/index.Jsp”/>
<forward name=“l(fā)ogin”path=“/login.Jsp”/>
……
</global-forwards>
<action-mappings>
……
<action path=“/user”name=“userForm”validate=“false”parameter=“method”
type=“org.Springframework.Web.Struts.DelegatingActionProxy”>
……
<forward name=“password”path=“/pages/system/user/password.Jsp”/>
</action>
在Struts-config.xml文件中定義保存HTTP表單對(duì)應(yīng)的Form和對(duì)應(yīng)的Action類(lèi)。Form Bean必須在Struts-config.xml進(jìn)行正確配置后,才能被程序引用。
系統(tǒng)采用AJAX+Struts+Spring+Hibernate開(kāi)源框架技術(shù)。在此架構(gòu)中,表示層采用Struts,業(yè)務(wù)邏輯層采用Spring,數(shù)據(jù)持久層選擇Hibernate。整個(gè)架構(gòu)能夠很好地實(shí)現(xiàn)控制流、業(yè)務(wù)調(diào)用、表示這3者的分離,集成后的框架具備了3種框架的技術(shù)優(yōu)勢(shì),將Struts的MVC機(jī)制,Spring的反轉(zhuǎn)控制機(jī)制以及Hibernate的O/R Mapping映射機(jī)制融合在一起,此架構(gòu)在系統(tǒng)開(kāi)發(fā)簡(jiǎn)潔性、開(kāi)發(fā)效率、開(kāi)發(fā)成本以及維護(hù)費(fèi)用等方面有著很大的優(yōu)勢(shì),同時(shí),采用了當(dāng)下十分流行的AJAX技術(shù),這使系統(tǒng)具有更加完美的用戶(hù)體驗(yàn)。
[1]劉槐德.高校運(yùn)動(dòng)會(huì)綜合信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶:重慶大學(xué),2009:9-10.
[2]宋依青,李書(shū)旗,王海濱.基于WLAN的分布式競(jìng)賽打分系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2009,26(11):165-168.SONGYi-qing,LIShu-qi,WANGHai-bin.Designand realization of distributional competition grading system based on the WLAN[J].Microelectronics&Computer,2006,26(11):165-168.
[3]蒲川江.奧運(yùn)比賽管理系統(tǒng)分析與設(shè)計(jì)及關(guān)鍵技術(shù)研究[D].北京:清華大學(xué),2005:14-16.
[4]Woolston D.Pro Ajax and the NET 2.0 platform[M].LosAngeles,California,USA:Wager T Press,2006.
[5]李剛.輕量級(jí)企業(yè)應(yīng)用實(shí)戰(zhàn)—Struts+Spring+Hibernate整合開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2007.
[6]傅鸝,殷旻昊.基于Struts+Spring+Hibernate+Ajax技術(shù)的科研管理系統(tǒng)設(shè)計(jì)[J].軟件導(dǎo)刊,2009,8(1):134-136.FU Li,YIN Min-hao.Design of research management system based on Struts+Spring+Hibernate+Ajax technology[J].Software Guide,2009,8(1):134-136.
[7]諶湘倩,狄文輝,孫冬.基于SSH框架與AJAX技術(shù)的Java Web應(yīng)用開(kāi)發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(10):2590-2592.CHEN Xiang-qian,DI Wen-hui,SUN Dong.Application of Java Web Based on SSH and AJAX[J].Computer Engineering and Design,2009,30(10):2590-2592.
[8]楊波,劉淵,冷文浩.基于Struts+Hibernate+Spring架構(gòu)的船舶數(shù)字化平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(2):1409-1412.YANG Bo,LIU Yuan,LENG Wen-hao.Ship digitized platform based on architecture of Struts&Hibernate&Spring[J].Computer Applications and Software 2008,25(2):1409-1412.
[9]肖杰,陳翔,何海江,等.基于AJAX和Struts的Web應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(8):1934-1938.XIAO Jie,CHEN Xiang,HE Hai-jiang,et al.Design and implementation of Web application based on AJAX and Struts[J].Computer Engineering and Design,2009,30(8):1934-1938.
[10]王軍豪,彭巖.Hibernate+Struts+Spring整合技術(shù)在電子政務(wù)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(6):1409-1412.WANG Jun-hao,PENG Yan.Application of Hibernate+Struts+SpringintegratetechnologyinE-government[J].Computer Engineering and Design,2008,29(6):1409-1412.