摘 要: 深入分析了在線投稿,、審稿系統(tǒng)的功能和關鍵技術,設計了基于B/S結構的在線投稿,、審稿系統(tǒng)方案,,并利用MVC模式的Struts2+Spring+Jpa構架思想,采用Java編程語言、JSP頁面技術,、MYSQL數據庫技術,,實現(xiàn)了在線投稿、審稿系統(tǒng),,最后對系統(tǒng)的性能進行了測試和分析,。
關鍵詞: 投稿; 審稿,; MVC,; Struts2+Spring+Jpa; MySQL
計算機應用技術的進步,,使期刊編輯流程信息化和網絡化成為主要趨勢,。在線審稿,、投稿系統(tǒng)縮短了作者的投稿周期,加快了編輯和專家的審稿流程,,為作者與編輯進行即時溝通架設了橋梁,,方便讀者、作者在線閱讀稿件,。
目前出現(xiàn)的在線投稿,、審稿系統(tǒng)采用ASP技術。ASP是微軟推出的一種技術,,只能在Windows操作系統(tǒng)上運行,,Windows本身的所有問題都會一成不變地累加到了它的身上。安全性,、穩(wěn)定性,、跨平臺性都會因為與Windows的捆綁而顯現(xiàn)出來。由于ASP程序采用非編譯語言,,大大降低了程序源代碼的安全性,,如果黑客侵入站點,就可以獲得ASP源代碼,;每當客戶端打開一個ASP網頁時,,服務器都必須將該ASP程序從頭到尾重讀一遍,并加以編譯執(zhí)行,,最后送出標準的HTML格式文件給客戶端,,因而影響了運行速度。而JSP是跨平臺的,,可以在所有的服務器操作系統(tǒng)上運行,。JSP源程序不大可能被下載,一些程序完全可以放到不對外的目錄中,。JSP在執(zhí)行以前先被編譯成字節(jié)碼(byte code),,字節(jié)碼由Java虛擬機(Java Virtual Machine)解釋執(zhí)行,比源碼解釋的效率高,;服務器上還有字節(jié)碼的Cache機制,,能提高字節(jié)碼的訪問效率。并且JSP結合MVC模式將數據和業(yè)務規(guī)則從表示層分開,,可以最大化地重用代碼,,具有易維護性。綜上所述本系統(tǒng)采用JSP[1]技術,。
1 系統(tǒng)功能需求概述
投稿,、審稿系統(tǒng)的主要目標是為了簡化傳統(tǒng)手工工作流程,縮短稿件在傳遞過程中的時間,,使投稿人審稿人的交流便利順暢,,縮短論文發(fā)表的時滯[2],。
本系統(tǒng)分為投稿模塊與審稿模塊。投稿模塊包含了以下5個功能:用戶注冊,、用戶登陸,、在線投稿、稿件狀態(tài)查詢,、修改個人信息,。在線投稿功能包括填寫稿件信息,上傳稿件,,稿件信息存儲在數據庫中,,稿件上傳到系統(tǒng)指定的硬盤目錄中,投稿系統(tǒng)自動給每個稿件唯一的編號,,以便編輯人員對稿件正確處理,。審稿模塊包含以下7個功能:權限管理、用戶登錄,、查看稿件,、稿件轉發(fā)、稿件審理,、在線退修,、擬錄稿件、退稿,。權限管理功能:管理員對各個使用者的權責給予其所需的權限來瀏覽相應的頁面,,使用相應的操作,此系統(tǒng)的管理員是編輯,;查看稿件功能:審稿模塊的功能是可以查看稿件的基本信息,,并可以下載原稿;稿件審理功能:評價稿件,,將評價錄入到數據庫中,。
2 系統(tǒng)設計
2.1 系統(tǒng)總體設計
本文根據傳統(tǒng)手工流程建立作者、編務,、編輯、副主編,、主編,、專家6個角色,系統(tǒng)方案圖如圖1,。這些角色可以通過編輯部網站遠程訪問編輯部的數據庫,。其中編輯角色相當于一個中部樞紐,查看編務發(fā)來的稿件,,評價稿件,,把稿件轉發(fā)給副主編,、專家,查看副主編,、專家對稿件的評價,,決定對稿件進行退稿、退修,、錄用等操作,。編輯具有角色管理的權限,刪除,、添加,、修改各個角色及其功能等。
本文設置兩個相對獨立的數據庫(投稿數據庫,、工作數據庫),,這樣,可把來自作者的垃圾數據和帶病毒數據擋在外面,。其中,,投稿數據庫可以限制作者的稿件文件的大小和數量,并把作者投稿以臨時文件形式存放,同時進行自動殺毒,。在投稿數據庫與工作數據庫之間,,單獨提供一個工具程序,由編輯人工參與實現(xiàn)數據的過濾和導入,。
2.2 處理流程
本系統(tǒng)的業(yè)務流程如圖2所示,,編務收到作者來稿后先進行查閱,刪除一些垃圾稿件,,并把不同欄目的稿件分配給不同的編輯,;編輯初審稿件可以直接退稿,可以把稿件轉發(fā)給副主編和相關的專家審稿,;副主編可以把稿件轉發(fā)給主編審理,;編輯收到副主編和專家的審稿反饋后可以決定稿件的處理結果(退稿、退修,、擬錄),;最后作者可以在系統(tǒng)上查看已投稿件的狀態(tài)。
2.3 數據庫設計
本系統(tǒng)采用的數據庫是MySQL[3],數據表有register,、caogaoxiang,、tougao、functions,、module,、role、role_function、user_role,、userinfo,、category。表register用來存儲作者注冊的個人信息,;表caogaoxiang是還未上傳稿件的情況下存儲作者投稿時填寫的稿件的相關信息,,并且作者可以在草稿箱看到此稿件的信息;表tougao是作者上傳稿件成功后存儲稿件信息,;表category是存儲編輯部人員對稿件操作的有關信息,,表tougao、表category通過公共關鍵字contributionNo關聯(lián),,關鍵字contributionNo是表tougao的主鍵,,是category的外鍵;表functions,、module,、role、role_function,、user_role,、userinfo用來實現(xiàn)權限管理功能,由編輯角色操作,。表tougao和表category部分內容如表1,、表2所示。
3 系統(tǒng)實現(xiàn)
3.1 MVC模式簡介
MVC架構是“Model-View-Controller”的縮寫,,即“模型-視圖-控制器”,。運用這種模塊化“分離”的思想,MVC設計模式實現(xiàn)了業(yè)務邏輯和顯示的分離,,大大提高了軟件的質量和代碼可維護性,。同時,降低了各層之間的耦合,,提供了應用的可擴展性,。
3.2 Struts2+Spring+JPA架構
基于MVC模式,本投稿和審稿系統(tǒng)分為持久層,、數據對象層,、業(yè)務層、控制層,、表現(xiàn)層,。Struts2框架用來實現(xiàn)頁面跳轉,Spring框架用來實現(xiàn)該系統(tǒng)業(yè)務邏輯的服務層,,JPA框架則用來操作實現(xiàn)持久層和控制事務[4]。
(1)表示層:展現(xiàn)給作者,、編輯人員,、審稿專家等用戶的狀態(tài)界面,,此處采用包含Struts2標簽的JSP頁面,Struts2標簽簡化了JSP代碼,。
(2)控制層:Struts2中的action,,把用戶的請求轉發(fā)給不同的業(yè)務邏輯進行處理,并把處理后的信息反饋到表現(xiàn)層,。
(3)業(yè)務邏輯層:此系統(tǒng)的業(yè)務邏輯包含該系統(tǒng)的業(yè)務需求,,用戶的每個業(yè)務請求都提供一個與之對應的業(yè)務邏輯方法。
(4)持久層:DAO層,,負責與持久化對象交互,,封裝了數據的增、刪,、查,、改操作。
(5)領域對象層:通過JPA作為O/R Mapping的映射工具,,將關系型數據庫映射成對象,,實現(xiàn)以面向對象方式操作數據庫。
各個模塊采用的Struts2+Spring+JPA架構的系統(tǒng)結構圖如圖3所示,。
3.3 系統(tǒng)實現(xiàn)
3.3.1 投稿模塊
(1)填寫稿件信息
作者角色填寫稿件信息:作者在表示層頁面Modify.JSP中填寫稿件信息,,點擊提交按鈕時,頁面信息通過form表單發(fā)送給控制層,控制層ModifyAction收到作者的請求,,調用業(yè)務邏輯層處理邏輯Modify方法,,業(yè)務層處理邏輯調用持久層update方法訪問領域對象層的數據對象。數據對象與數據庫中的數據對應,,處理數據對象就相當于處理數據庫中的數據,。圖4為作者填寫稿件信息的邏輯時序圖。
部分代碼如下:
ModifyAction調用業(yè)務層邏輯方法的代碼為:
public String modify()
{
cf.modify(c);
return Action.SUCCESS;
}
操作數據表的業(yè)務層接口代碼: public void modify (Caogao c);
操作數據表業(yè)務邏輯層實現(xiàn)方法modify代碼:public void modify (Caogao c) {
cd.update(c);
}
操作數據表的持久層接口代碼:public Caogao update(Caogao entity);
操作數據表持久層實現(xiàn)方法update代碼:
public Caogao update(Caogao entity) {
EntityManagerHelper.beginTransaction();
try {
Caogao result = getEntityManager().merge(entity);
EntityManagerHelper.commit();
return result;
} catch (RuntimeException re) {
EntityManagerHelper.rollback();
throw re;
}
}
(2)上傳稿件
作者角色上傳稿件:采用在線文件上傳組件Components-FileUPload上傳稿件,。作者在表示層頁面Upload.jsp中選擇要上傳的稿件的路徑,,點擊上傳按鈕,頁面請求通過form表單發(fā)送給控制層UploadAction,, form中的enctype屬性用來設置上傳數據的編碼方式,,應設為multipart/form-date。UploadActon中的execute()方法中首先創(chuàng)建一個字節(jié)型輸入流來讀取傳送來的文件file,。然后通過ServletAcrionContext.getRequest().getRealPath()獲取存儲問價的父目錄,,然后創(chuàng)建一個destFile文件。該文件用來做為輸出流的目的文件,。最后再創(chuàng)建一個關于destFile文件的輸出流,。創(chuàng)建完輸入流和輸出流后,就可以創(chuàng)建一個中間字節(jié)數組buffer來實現(xiàn)輸入流與輸出流的轉換,從而實現(xiàn)文件的上傳功能,。實現(xiàn)上傳功能,,還要在struts.xml文件中對實現(xiàn)文件上的Action進行攔截器方面的配置,可以設置允許上傳文件的大小,,文件類型等等,。上傳成功后返回Uploadsuccess.jsp。
3.3.2 審稿模塊
(1)查閱稿件
編輯角色查看稿件信息:稿件信息包括稿件的基本信息,、稿件內容及編輯部工作人員和專家對其的評價,。查看稿件內容需要下載稿件,實現(xiàn)方法也是采用Components-FileUPload組件,,和上面講到的上傳稿件類似,,這里就不再詳述。在編輯角色的ViEW層頁面Editor.jsp點擊目標稿件的查看按鈕,,則通過URL鏈接到findSingleContribution.action,,并把目標稿件的id傳送給action,此action調用業(yè)務層處理邏輯findSingleContribution,,業(yè)務層調用持久層findById方法查詢數據對象,, 查詢完成后返回數據庫結果,返回數據對象結果,,返回邏輯處理結果,,返回頁面視圖展現(xiàn)結果。
(2)審理稿件
編輯角色審理稿件:主要包括評價稿件,,提交審理結果,。評價稿件與作者角色填寫稿件信息類似,調用持久層的update方法,。審理結果有三種:擬錄,、退修、退稿,、分別對應數據庫flag中的1,、2、3,。提交審理結果就是修改flag的值,。在Editor.jsp中選擇目標稿件的三種稿件的任一種結果,調用控制層的review.action并傳遞目標稿件的id和稿件處理結果flag的值給action,,調用業(yè)務層的review方法,,調用持久層的update方法。返回處理結果,。
4 系統(tǒng)測試
把系統(tǒng)布置到tomcate6中,,通過瀏覽器訪問,。按照注冊、登陸,、投稿,、審稿的流程操作系統(tǒng)。測試結果表明基本實現(xiàn)了需求分析時的功能,。并且該系統(tǒng)通過javascript實現(xiàn)了許多瀏覽器端數據輸入驗證功能,例如文題不能為空,、驗證郵箱格式,、驗證是否上傳了稿件等等。 圖5是投稿成功后,,按照編輯人員審稿的流程操作的測試結果,。
本文設計的網站和系統(tǒng)是基于B/S結構,采用Dreamweaver制作靜態(tài)網頁,,采用MVC模式Struts2+Spring+Jpa框架,,Java語言和JSP技術,MySQL數據庫實現(xiàn)的方案,,完成了投稿和審稿功能,。本系統(tǒng)具有如下優(yōu)點:采用Java語言和JSP技術,具有跨平臺的優(yōu)點,;基于B/S結構,,系統(tǒng)運行更簡易;采用MVC模式和Struts2+Spring+Jpa框架,,易維護,、易升級、易操作,。本系統(tǒng)很好地解決了傳統(tǒng)手工投審稿效率低,、耗時長、交互性差的問題,。
參考文獻
[1] 李振捷. JSP網站開發(fā)典型模塊與實例精講[M].北京:電子工業(yè)出版社,2007.
[2] 胡異峰.投稿考評及分析系統(tǒng)的設計與實現(xiàn)[J].計算機工程與應用,2005(29):223-225.
[3] (荷)范德蘭斯著. MySQL開發(fā)者SQL權威指南[M].許杰星,,等譯.北京:機械工業(yè)出版社,2008.
[4] 林永傍,,劉偉平,,黃紅斌,等.EPON故障管理系統(tǒng)的設計與實現(xiàn)[J].光通信技術,,2009,33(10):16-18.