李 睿
(湖南省農業科學院科技情報研究所,湖南 長沙 410125)
從廣義角度來說,基于Web的信息管理系統并不少見。但傳統的B/S架構下的信息管理系統,多采用動態服務器頁面(ASP)、超級文本預處理語言(PHP)技術,在執行效率、跨平臺性能、成本控制等方面不盡人意,而基于Java Web的開發技術較好地解決了上述問題[1]。目前基于Java Web的信息系統并不多見,采用Java Web開發的期刊信息管理系統更是寥寥無幾。為此,對B/S架構下基于Java Web的開發技術進行了討論,以供開發者參考。
所謂動態頁面文件指的是,當客戶請求頁面時,Web服務器動態生成文檔返回給瀏覽器,以響應客戶的請求。隨著線下業務向網上的發展,Web應用越來越復雜,由此產生了各種服務器端頁面編寫技術,JSP便是其中一種。所謂JSP是Java Server Page的縮寫,JSP在HTML頁面文件中嵌入Java腳本,從而實現動態網頁功能。其中,HTML標簽負責頁面的布局和顯示外觀,Java代碼負責提取動態數據,實現業務邏輯[2]。JSP代碼被編譯成Servlet并在Java虛擬機上執行,而這種編譯操作僅在對JSP頁面的第一次請求時發生。因此,普遍認為,相對于其他的動態頁面技術如ASP、PHP等,JSP的執行效率較高。JSP頁面響應過程見圖1。
XML是Extensible Markup Language的縮寫,即擴展標記語言。由于其嚴格書寫規范和標記可以擴展,因而容易解析,加之其獨立于平臺,因此在Web應用中它是數據交互的載體。各框架以XML文件作為配置文件,在加載時根據定制,完成諸如攔截器的設置、事務的設置、數據源的配置等工作[3-4]。因此在信息管理系統開發中,相對于代碼的編寫,XML配置文件的書寫顯得更為重要。

圖1 JSP/Servlet基本頁面響應過程
在一些簡單應用中,通過JSP中的JAVA腳本即可直接訪問數據,實現業務邏輯,然而在大型應用中,HTML標簽與JAVA腳本的混合使用,必將導致表現層與業務邏輯層代碼的混雜,可讀性降低、開發維護難度增加。WEB框架如同代碼的組織者,它實現了MVC模型,分離了表現層與業務層,從而使得代碼的結構清晰,層次明確。STRUTS2是最具代表性的WEB框架,這里給出其響應模型,見圖2。

圖2 STRUTS2框架基本響應模型
Struts2框架是目前比較優秀的Java Web框架,且久經市場考驗。其特點如下。
從客戶端Web頁面提交的數據,均是字符串數據,服務器端如何將其轉換為自己所需的數據類型,是非常棘手的事情。而Struts框架對此提供了強有力的支持。
面向對象編程的概念興起,通過類及其實例化對象,以及類間多態、類的封裝等,解決了如何在抽象層面描述自然實體的問題。但隨著軟件技術的發展,面向對象的不足也顯示出來,如如何在A發生時進行B的處理,面向對象技術即不能很好解決。由此,一種新的編程概念出現,那就是面向切面編程,攔截器便是面向切面編程的一個很好的實踐,Struts2的攔截器功能十分強大,其自身提供了比較完備的攔截機制,而且通過對struts.xml文件的配置,可以自行擴展攔截器的功能。
當Web頁面的HTTP請求HttpRequest到達Web容器后,容器如何與后臺的控制層進行數據交互,控制層中各Action間如何進行數據交互,Action如何實現對Session、Request等對象的訪問,若要手工實現是非常不方便的。Struts2擴展了OGNL,提供了值棧這種數據結構,從而方便了框架、容器間的數據交互。
Ajax是Asynchronous Javascript and Xml的縮寫,是基于XMLHttpRequest的一組腳本技術的簡稱,它能夠以DOM文檔的形式返回內容,可以同步或異步地返回WEB服務器的響應。通俗地來說,使用Ajax技術帶來的最直觀的感受就是,可以在不跳轉頁面的情況下,實現頁面內容的更新。也就是說可以在客戶不察覺的情況下實現前后的交互,該技術的主要目的是改善客戶體驗。作為前后臺數據交互的橋梁,Ajax既可采用XML格式的數據,也可采用JSON格式的數據,相對于XML數據而言,JSON數據是輕量級的,解析也更為簡單。Struts2的擴展性非常良好,可以通過增加插件的形式,提供對JSON字符串自動解析的功能,同時,也可以非常方便地提供對AJAX框架如JQUERY等的支持。
期刊信息管理系統的層次模型見圖3。

圖3 期刊信息管理系統所采用的層次模型及實現技術
經過分析,可以明確期刊信息管理系統Java Web開發的技術構成,基于此,提出期刊信息管理系統開發的技術思路如下。首先根據期刊的業務流程,采用統一對象建模語言(UML),對系統進行用例分析,以確定系統的基本功能,根據系統功能,進行類圖的設計,再通過順序圖、狀態圖等確定類間的聯系,以及類的狀態的變化;然后,根據UML的結果,分層次進行系統開發,在系統后臺數據庫的開發過程中可使用Hibernate簡化開發工作,獲取所需數據庫及數據表,在系統前臺的開發過程中可使用JSP頁面技術,并采用AJAX與后臺進行數據交互,在控制層的開發中,可以使用Struts2框架進行業務邏輯控制,使用Spring框架進行事務管理、數據源配置等工作,同時還可以采用通用數據訪問接口(DAO)細化開發層次;最后,在開發過程中,采用Junit進行測試工作,以保障開發的順利進行[5-6]。
[1]孫 鑫.Java Web開發詳解[M].北京:電子工業出版社,2008.
[2]孫 鑫.STRUTS2深入詳解[M].北京:電子工業出版社,2008.
[3]Elliot J.Hibernate程序高手秘笈[M].南京:東南大學出版社,2007.
[4]丁躍潮,張 濤,葉文來,等.XML實用教程[M].北京:北京大學出版社,2006.
[5]Alan Shalloway,James R.Trott.設計模式精解[M].北京:清華大學出版社,2004.
[6]薩師煊,王 珊.數據庫系統概論[M].北京:高等教育出版社,2000.