王冰 邢國(guó)光 肖林
[摘要]項(xiàng)目申報(bào)是指政府機(jī)關(guān)針對(duì)企業(yè)或其他研究單位作出的一系列優(yōu)惠政策,企業(yè)或相關(guān)研究單位再根據(jù)政府的政策進(jìn)行編寫申報(bào)文件然后根據(jù)相關(guān)申報(bào)要求和流程進(jìn)行申報(bào)。本文首先對(duì)項(xiàng)目申報(bào)系統(tǒng)的功能需求進(jìn)行了分析,然后,對(duì)MVC設(shè)計(jì)模式及Struts框架進(jìn)行了研究,最后基于Struts框架提出項(xiàng)目申報(bào)系統(tǒng)的設(shè)計(jì)方案,并對(duì)方案進(jìn)行了實(shí)現(xiàn)。
[關(guān)鍵詞]科研項(xiàng)目;項(xiàng)目申報(bào);審批
隨著我國(guó)財(cái)政支持資金渠道的增多,企業(yè)申報(bào)的財(cái)政支持項(xiàng)目越來(lái)越多。項(xiàng)目申報(bào)是一項(xiàng)繁瑣的工作,通過(guò)人工申報(bào)容易出錯(cuò)。本文實(shí)現(xiàn)基于Web的項(xiàng)目申報(bào)系統(tǒng),旨在為廣大科技工作者提供一個(gè)進(jìn)行項(xiàng)目申報(bào)的網(wǎng)絡(luò)平臺(tái)。為系統(tǒng)管理員提供一種方便的項(xiàng)目申報(bào)管理手段,實(shí)現(xiàn)申報(bào)管理以及申報(bào)流程的系統(tǒng)化、規(guī)范化和自動(dòng)化。項(xiàng)目審批者通過(guò)系統(tǒng)來(lái)實(shí)現(xiàn)項(xiàng)目受理、公文傳遞、項(xiàng)目審批、結(jié)果反饋等,為用戶提供一站式的服務(wù)。用戶進(jìn)入申報(bào)系統(tǒng)后,可提交申請(qǐng),查詢審批結(jié)果等。因此開(kāi)展基于web的項(xiàng)目申報(bào)系統(tǒng)的研究和開(kāi)發(fā),具有十分重要的意義。
1.MVC設(shè)計(jì)模式
MVC通過(guò)把一個(gè)應(yīng)用的實(shí)現(xiàn)劃分為三個(gè)層,即模型層、視圖層和控制層,使商業(yè)邏輯和用戶界面有效地進(jìn)行分離。模型層、視圖層和控制層三者的功能及相互協(xié)作關(guān)系。模型層(Model):負(fù)責(zé)制定相應(yīng)的業(yè)務(wù)規(guī)則,根據(jù)視圖層發(fā)來(lái)的請(qǐng)求數(shù)據(jù)。對(duì)業(yè)務(wù)邏輯進(jìn)行處理,并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)是MVC的核心內(nèi)容。視圖層(View):負(fù)責(zé)實(shí)現(xiàn)與用戶的交互,可以是HTML頁(yè)面,也可以是JSP頁(yè)面等。一個(gè)Web應(yīng)用可能對(duì)應(yīng)很多不同的視圖,視圖可以對(duì)數(shù)據(jù)進(jìn)行采集和顯示,但不能處理業(yè)務(wù)邏輯,數(shù)據(jù)的采集和顯示都要依賴于模型層??刂茖樱╟ontroller):是一個(gè)請(qǐng)求分發(fā)器,負(fù)責(zé)接收視圖層的請(qǐng)求,可以將模型層與視圖層綁定在一起,通過(guò)選擇相應(yīng)的模型和視圖完成相應(yīng)的用戶請(qǐng)求。一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。如果視圖層通過(guò)控制層改變了模型的數(shù)據(jù),所有依賴于這些模型的視圖都能及時(shí)體現(xiàn)出這些變化。
2.Struts框架
Struts框架對(duì)MVC設(shè)計(jì)模式中的模型層、視圖層和控制層都提供了相應(yīng)的組件類。其中,模型層由Action Form類和Java Bean組件等組成,Action Form類用于將視圖層提交的請(qǐng)求參數(shù)封裝到相應(yīng)的Action Form對(duì)象中,該對(duì)象被控制層的Aetion Servlet類轉(zhuǎn)發(fā)給Action類,Action類根據(jù)Action Form對(duì)象封裝的請(qǐng)求參數(shù)來(lái)處理用戶的請(qǐng)求,具體的業(yè)務(wù)邏輯可通過(guò)Java Bean組件來(lái)實(shí)現(xiàn)。視圖層主要包括JSP頁(yè)面,在JSP頁(yè)面中可通過(guò)Struts框架提供的標(biāo)簽庫(kù)實(shí)現(xiàn)與模型層交互??刂茖佑上到y(tǒng)核心控制器和業(yè)務(wù)邏輯控制器組成。系統(tǒng)核心控制器是Actionser let類,該類繼承自http Servlet類,可以按標(biāo)準(zhǔn)的Serv let類進(jìn)行配置,它負(fù)責(zé)攔截所有的請(qǐng)求,然后根據(jù)用戶請(qǐng)求決定要轉(zhuǎn)給哪個(gè)業(yè)務(wù)邏輯控制器。業(yè)務(wù)邏輯控制器,可以是Action類的子類,負(fù)責(zé)接收來(lái)自Acdon Servlet類的請(qǐng)求,并根據(jù)該請(qǐng)求調(diào)用模型層的業(yè)務(wù)邏輯方法處理請(qǐng)求,請(qǐng)求處理結(jié)束后,將結(jié)果提交到Action Servlet類,由Aetion Servlet類將處理結(jié)果返回給相應(yīng)的JSP頁(yè)面進(jìn)行顯示。Struts框架中各組件的協(xié)作關(guān)系。
3.系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1系統(tǒng)設(shè)計(jì)
通過(guò)對(duì)項(xiàng)目申報(bào)系統(tǒng)進(jìn)行需求分析,可以為系統(tǒng)設(shè)計(jì)以下幾種基本功能,即申報(bào)、審批、核準(zhǔn)、系統(tǒng)管理等。系統(tǒng)的用戶角色可分為管理員、申報(bào)者、審批者和核準(zhǔn)者等,用戶登錄系統(tǒng)后,根據(jù)角色分別進(jìn)入相應(yīng)的工作頁(yè)面。申報(bào)者登錄系統(tǒng)后,能夠查看系統(tǒng)發(fā)布的項(xiàng)目信息,能夠輸入并提交相應(yīng)的項(xiàng)目申報(bào)信息,可以隨時(shí)查看審批結(jié)果。當(dāng)審批沒(méi)有通過(guò)時(shí),可以對(duì)申請(qǐng)信息進(jìn)行修改后再次提交。審批者登錄系統(tǒng)后,可以查看分配給自己的審批任務(wù),分別選擇相應(yīng)的任務(wù)進(jìn)行審批。如果審批通過(guò),則可以提交給相應(yīng)的領(lǐng)導(dǎo)進(jìn)行核準(zhǔn),如果審批沒(méi)有通過(guò),則填寫意見(jiàn)后返回到申報(bào)者要求重新提交申請(qǐng)信息。核準(zhǔn)者登錄系統(tǒng)后,可以查看審批者提交給自己的已通過(guò)的審批任務(wù),分別選擇相應(yīng)的任務(wù)進(jìn)行核準(zhǔn)。如果核準(zhǔn)通過(guò),則該審批任務(wù)被設(shè)為“成功”狀態(tài),如果核準(zhǔn)沒(méi)有通過(guò),則填寫意見(jiàn)后轉(zhuǎn)送到審批者要求重新審批。系統(tǒng)管理員登錄系統(tǒng)后,能發(fā)布、修改和刪除相應(yīng)的項(xiàng)目信息,能夠?qū)ο到y(tǒng)用戶進(jìn)行管理,對(duì)用戶訪問(wèn)權(quán)限進(jìn)行設(shè)置,通過(guò)系統(tǒng)日志對(duì)審批流程進(jìn)行監(jiān)控,對(duì)審批結(jié)果數(shù)據(jù)進(jìn)行管理。
3.2系統(tǒng)實(shí)現(xiàn)
系統(tǒng)基于Struts框架進(jìn)行設(shè)計(jì),JSP頁(yè)面作為系統(tǒng)的視圖層,ActionServlet類和Aetion類作為系統(tǒng)的控制層,ActionForm類和JavaBean作為系統(tǒng)的模型層。視圖層組件包括:login,jsp頁(yè)面,用來(lái)實(shí)現(xiàn)用戶登錄。apply,jsp頁(yè)面,用來(lái)實(shí)現(xiàn)申報(bào)申請(qǐng)信息的輸入。Showresuh,jsp頁(yè)面,用來(lái)輸出顯示用戶的審批結(jié)果信息。Approve,jsp頁(yè)面,用來(lái)對(duì)審批任務(wù)進(jìn)行審批。Check,jsp頁(yè)面,用來(lái)對(duì)審批任務(wù)進(jìn)行核準(zhǔn)。ApplyActionForm類是Struts框架中AetionForm類的子類,用來(lái)封裝用戶提交的項(xiàng)目申報(bào)申請(qǐng)信息。proapplyBean類是用于處理業(yè)務(wù)邏輯的JavaBean,其封裝了對(duì)數(shù)據(jù)庫(kù)的操作,其業(yè)務(wù)邏輯的實(shí)現(xiàn)是通過(guò)調(diào)用相應(yīng)方法來(lái)完成的。loginCheck()方法用來(lái)實(shí)現(xiàn)用戶登錄驗(yàn)證,saveData()方法用來(lái)實(shí)現(xiàn)保存用戶提交的項(xiàng)目申報(bào)申請(qǐng)信息,queryDataO方法用來(lái)查詢指定的審批任務(wù)結(jié)果信息。approve()方法用來(lái)保存審批結(jié)果信息,check0方法用來(lái)保存核準(zhǔn)結(jié)果信息。控制層組件包括ActionServlet類和Action類,ActionServlet類來(lái)自Struts框架,是整個(gè)應(yīng)用的控制中心,通常不需要擴(kuò)展。使用Struts框架提供的Action類擴(kuò)展生成相應(yīng)的子類(如pmapplyAction,java等),其作用是接收ActionServlet類請(qǐng)求,取得ApplyActionForm對(duì)象中封裝的數(shù)據(jù),調(diào)用proapplyBean組件的業(yè)務(wù)方法,進(jìn)行相應(yīng)的業(yè)務(wù)處理。
4.結(jié)束語(yǔ)
Struts是一種非常優(yōu)秀的MVC實(shí)現(xiàn)框架,本文針對(duì)項(xiàng)目申報(bào)業(yè)務(wù)的需求,基于Struts框架進(jìn)行了項(xiàng)目申報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),將傳統(tǒng)的三層架構(gòu)的頁(yè)面顯示、業(yè)務(wù)處理、系統(tǒng)控制三者分開(kāi),使系統(tǒng)具有靈活、可擴(kuò)展、易維護(hù)的特點(diǎn)。系統(tǒng)遵循J2EE規(guī)范和MVC設(shè)計(jì)模式,具有跨平臺(tái)、低成本、開(kāi)發(fā)高效快捷、可裁剪、可重用等優(yōu)點(diǎn),解決了目前項(xiàng)目申報(bào)系統(tǒng)推廣普及的一些瓶頸問(wèn)題,適用于項(xiàng)目申報(bào)系統(tǒng)建設(shè)項(xiàng)目的需求,具有一定的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1]孫衛(wèi)琴.基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)[M].電子工業(yè)出版社,2010
[2]李躍.基于Web的高校項(xiàng)目評(píng)審系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012