唐春玲 胡方霞 李惠玲 張 燕
(重慶工商職業(yè)學(xué)院,重慶 400052)
Struts技術(shù)在科研管理系統(tǒng)中的應(yīng)用
唐春玲 胡方霞 李惠玲 張 燕
(重慶工商職業(yè)學(xué)院,重慶 400052)
分析MVC設(shè)計模式和Struts的工作原理,針對科研管理系統(tǒng)的特點(diǎn),在系統(tǒng)中采用Struts技術(shù),并通過實(shí)例介紹其在應(yīng)用程序中的具體應(yīng)用。
Struts;MVC;科研管理系統(tǒng);B/S
Struts框架是全世界第一個發(fā)布的MVC框架,它由Apache Software Foundation組織發(fā)布。Struts1框架采用MVC模式將程序代碼分為三部分,把應(yīng)用軟件的輸入、處理和輸出分成不同組件來實(shí)現(xiàn),因此開發(fā)、管理相對容易。本文設(shè)計基于Struts技術(shù)的Web應(yīng)用程序。
目前大多數(shù)開發(fā)系統(tǒng)存在系統(tǒng)結(jié)構(gòu)復(fù)雜,耦合性高,修改、維護(hù)困難等問題,主要在于頁面邏輯、業(yè)務(wù)邏輯和數(shù)據(jù)邏輯糅合在一起所導(dǎo)致。Struts框架采用MVC模式將程序代碼分為三部分,把應(yīng)用軟件的輸入、處理和輸出分成不同組件來實(shí)現(xiàn),因此開發(fā)、管理相對容易。
MVC(Model-View-Controller)是模型-視圖-控制器的簡稱[1],它將系統(tǒng)分為三個模塊:模型(Model)、視圖(View)和控制器(Controller)(圖 1)[2]。
(1)模型:模型是應(yīng)用程序的主題部分。模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯。一個模型能為多個視圖提供數(shù)據(jù),提高了應(yīng)用的可重用性。
(2)視圖:視圖是用戶與系統(tǒng)交互的界面。視圖向用戶顯示相關(guān)數(shù)據(jù),并接受用戶的輸入,但視圖并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。對于基于請求/響應(yīng)方式的Web應(yīng)用,模型位于服務(wù)器端,視圖位于瀏覽器端。
(3)控制器:控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的請求。當(dāng)Web用戶向服務(wù)器發(fā)送HTML請求時,控制器接受請求并調(diào)用相應(yīng)的模型組件去處理請求,然后調(diào)用相應(yīng)的視圖顯示模型返回的數(shù)據(jù)。
圖1 MVC模式
Structs1是在JSP Model2基礎(chǔ)上實(shí)現(xiàn)了一個MVC框架。在Structs1框架中,MVC中的視圖(View)部分由一組 JSP文件構(gòu)成。MVC中的模型(Model)是由底層的業(yè)務(wù)邏輯組件充當(dāng),業(yè)務(wù)邏輯方法的實(shí)現(xiàn)由JavaBean組件完成??刂破?Controller)由兩個部分組成:核心控制器和業(yè)務(wù)控制器。其中核心控制器是ActionServlet,由Struts1框架提供;業(yè)務(wù)邏輯控制器是用戶自定義的Action,由應(yīng)用開發(fā)者提供[3-4]。
Struts的工作流程為:
(1)整個應(yīng)用由客戶端請求驅(qū)動;
(2)當(dāng)客戶端向Web應(yīng)用發(fā)送請求時,請求將被Struts1的核心控制器ActionServlet攔截;
(3)ActionServlet根據(jù)請求決定是否需要調(diào)用業(yè)務(wù)邏輯控制器處理用戶請求(實(shí)際上,業(yè)務(wù)邏輯控制器還是控制器,它只是負(fù)責(zé)調(diào)用模型來處理用戶請求);
(4)當(dāng)用戶請求處理完成后,其處理結(jié)果通過JSP呈現(xiàn)給用戶,程序運(yùn)行流程圖如圖2所示[5]。
圖2 Struts程序運(yùn)行流程
系統(tǒng)采用B/S結(jié)構(gòu)即瀏覽器/服務(wù)器結(jié)構(gòu)。系統(tǒng)配置如下:
WEB服務(wù)器:Tomcat6
數(shù)據(jù)庫:SQL Server2005。
JAVA開發(fā)工具:MyEclipse8.6+JDK1.6其中使用到Struts技術(shù),Herbernate等技術(shù)。
客 戶 端 :Netscape Navigator或 者 Internet Explorer。
本系統(tǒng)以項(xiàng)目申報為主,總體功能結(jié)構(gòu)如下:項(xiàng)目管理模塊,科研成果管理模塊,專家管理模塊,相關(guān)下載和用戶管理模塊。
(1)項(xiàng)目管理模塊
項(xiàng)目管理模塊分為科研活動管理、項(xiàng)目申報兩個子模塊??蒲谢顒庸芾碜幽K的功能是設(shè)置學(xué)校每次科研活動申報時間等信息,并可查詢和修改。項(xiàng)目申報子模塊的功能是查詢每個項(xiàng)目的申報、審批、立項(xiàng)、進(jìn)度等,還可以對經(jīng)費(fèi)進(jìn)行管理。經(jīng)費(fèi)管理包括經(jīng)費(fèi)來源、經(jīng)費(fèi)使用計劃和實(shí)際使用情況等。
(2)科研成果管理模塊
該模塊完成對學(xué)校每個部門科研項(xiàng)目的匯總。
(3)專家管理模塊
該模塊可設(shè)置科研活動中的評審專家,并為評審專家分組,為某個項(xiàng)目指定專家,收集專家意見等。
(4)相關(guān)下載模塊
該模塊可以對科研活動中使用的文件表格進(jìn)行下載。
(5)用戶管理模塊
該模塊下分個人管理、審批管理兩個子模塊。個人管理可以修改個人信息和密碼。審批管理可以對當(dāng)前注冊用戶進(jìn)行審批并賦予相應(yīng)的角色權(quán)限,其中角色權(quán)限分為普通用戶,部門負(fù)責(zé)人和專家。
下面以項(xiàng)目管理模塊中的項(xiàng)目信息填寫為例,介紹應(yīng)用Struts技術(shù)對系統(tǒng)進(jìn)行開發(fā)設(shè)計的過程。
(1)視圖
系統(tǒng)視圖部分主要是由JSP技術(shù)實(shí)現(xiàn),是系統(tǒng)的顯示部分,是系統(tǒng)與用戶的接口,由一系列HTML頁面和JSP頁面組成。這些jsp文件中不添加任何業(yè)務(wù)邏輯處理代碼,只添加一些JSP標(biāo)簽。當(dāng)用戶在頁面點(diǎn)擊相應(yīng)的控件時,表示層把用戶請求傳到控制層,由控制層處理,控制層根據(jù)實(shí)際情況調(diào)用業(yè)務(wù)層,完成具體操作,最后通過視圖顯示出來。本系統(tǒng)用戶界面有注冊界面regester.jsp,專家評分界面score.jsp等。以填寫申報項(xiàng)目信息界面projectMessage.jsp為例,此界面需輸入以下信息:項(xiàng)目號ProjectID(系統(tǒng)自動生成),項(xiàng)目名稱ProjectName,項(xiàng)目負(fù)責(zé)人ProjectUser(默認(rèn)的是當(dāng)前用戶), 項(xiàng)目類型ProjectType,申報時間ProjectTime。如果填寫項(xiàng)目信息無誤,則顯示上傳項(xiàng)目申報書界面project.jsp。
(2)控制器
視圖發(fā)送請求后由核心控制器ActionServlet決定調(diào)用合適的業(yè)務(wù)控制器Action。以項(xiàng)目申請的Project.Action為例,控制器包括一個Action類ProjectMessageAction, 這個Java類一般從org.apache.struts.action.Action類繼承??刂破鞯闹饕蝿?wù)是接受并處理從projectMessage.jsp接收的項(xiàng)目申報有關(guān)信息,若信息正確,則申報成功,跳轉(zhuǎn)到project.jsp頁面,上傳項(xiàng)目申報申請書;否則申報失敗,則跳轉(zhuǎn)到ProjectMessagefailed.jsp頁面,提示出錯信息。在實(shí)現(xiàn)控制器之前,需要先實(shí)現(xiàn)一個ActionForm類,這個類的作用是保存JSP頁面提交的數(shù)據(jù)。ActionForm類一般從org.apache.struts.action.ActionForm類繼承,而且在類中需要按著需要保存的數(shù)據(jù)表字段添加屬性。ActionForm類的屬性取名時要注意,必須和JSP頁面中的<html>標(biāo)簽的property屬性值一致,如果不一致,將會拋出異常。
(3)模型
模型由實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean組件構(gòu)成,主要用來在視圖組件和控制器組件之間傳遞HTML表單數(shù)據(jù),一般每個HTML表單對應(yīng)一個ActionForm Bean。項(xiàng)目信息填寫的ActionForm Bean由ProjectMessageForm構(gòu)成,在ProjectMessageForm中需要操縱數(shù)據(jù)庫,而項(xiàng)目中大量程序都要操縱數(shù)據(jù)庫,因此單獨(dú)編寫了一個ConDatabase連接數(shù)據(jù)庫的父類,項(xiàng)目中需要連接數(shù)據(jù)庫的程序只要繼承此父類就可以了。此外還在ActionForm中使用了validate()方法用于檢驗(yàn)用戶輸入數(shù)據(jù)的合法性。在類中還使用了一個ProductForm類,這個類是一個ActionForm類,它的功能是保存客戶端提交的數(shù)據(jù)。以下是ProjectMessageForm的實(shí)現(xiàn)代碼。
(4)配置文件
在Struts系統(tǒng)中控制器ActionServlet是核心,界面中需要執(zhí)行事務(wù)邏輯的表單會提交一個請求,由控制器ActionServlet調(diào)用相應(yīng)的組件。用兩個基于XML的配置文件來配置,分別是web.xml和struts-cofig.xml文件。web.xml文件是配置所有web應(yīng)用的,而struts-config.xml文件是struts專用的配置文件,在本質(zhì)上也是一個基于Servlet的Web應(yīng)用,他將系統(tǒng)中的各組件結(jié)合在一起。在strutsconfig.xml文件中通過<action-mapping>元素中的<action>子元素指定需要訪問的Action路徑,以下是項(xiàng)目信息填寫功能的<action-mapping>:
<action-mappings>
<action name=” ProjectMessageForm” type=”KYXT..action.ProjectMessageAction” validate= ”true”in put=”projectMessage.jsp” scope=”request” path=”/ProjectMessageAction”>
Struts技術(shù)可以把用戶界面、業(yè)務(wù)過程、業(yè)務(wù)邏輯和業(yè)務(wù)控制進(jìn)行分離,使得程序開發(fā)過程效率更高,進(jìn)度更快,而且它允許一個模型組件被多個視圖組件共享,這樣大大提高了代碼的可重用性,在可維護(hù)性、交互性上較之一般的J2EE開發(fā)也有明顯的優(yōu)勢。將其運(yùn)用到科研管理系統(tǒng)中不但系統(tǒng)運(yùn)行穩(wěn)定、后期維護(hù)方便、操作簡便,而且提高了工作效率,科研管理流程更加規(guī)范化。
[1]王明,陸正球.基于MVC科研管理系統(tǒng)的研究與實(shí)現(xiàn)[J].微計算機(jī)應(yīng)用,2009(1):11-12.
[2]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.
[3]曾宇胸,王非.基于Struts框架技術(shù)的WEB應(yīng)用系統(tǒng)[J].計算機(jī)應(yīng)用與軟件,2008(7):196-197.
[4]吳興惠,陳明銳,賴文志.基于Struts的高校科研管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].海南廣播電視大學(xué)學(xué)報,2008(1):91-93.
[5]李剛.Struts2權(quán)威指南—基于WebWork核心的MVC開發(fā)[M].北京:電子工業(yè)出版社,2007.
Abstract:This article firstly analyzes the MVC design pattern and the mechanism of Struts.According to the characteristics of scientific management system,Struts is used in this system and then a real Web application is taken as an example to show a detailed application of Struts.
Key words:Struts;MVC;scientific management system;B/S
Application of Struts Technique in Scientific Management System
TANG Chun-ling HU Fang-xia LI Hui-ling ZHANG Yan
(Chongqing Technology and Business Institute,Chongqing 400052)
TP311
A
1673-1980(2011)06-0183-03
2011-07-23
唐春玲(1981-),女,吉林汪清人,碩士,講師,研究方向?yàn)閿?shù)字信號處理。