《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技术 > 业界动态 > 基于Struts框架的高校网络教务信息系统设计

基于Struts框架的高校网络教务信息系统设计

2008-06-24
作者:郁 雪1,常 鹏1,2,董旭

  摘 要: 以天津大學(xué)校園信息化建設(shè)為背景,研究了基于J2EE技術(shù)和MVC經(jīng)典軟件模式的STRUTS構(gòu)架體系,應(yīng)用于綜合教務(wù)管理信息系統(tǒng)中網(wǎng)絡(luò)教學(xué)" title="網(wǎng)絡(luò)教學(xué)">網(wǎng)絡(luò)教學(xué)平臺(tái)的開(kāi)發(fā)與實(shí)現(xiàn),體現(xiàn)出struts技術(shù)在Web應(yīng)用開(kāi)發(fā)中的強(qiáng)大功效。
  關(guān)鍵詞: Struts框架 模型-視圖-控制器 Web應(yīng)用 教務(wù)系統(tǒng)


  信息社會(huì)的發(fā)展使人們?cè)絹?lái)越依賴網(wǎng)絡(luò),而網(wǎng)絡(luò)技術(shù)已經(jīng)成為當(dāng)前的主要發(fā)展趨勢(shì)。隨著校園信息化建設(shè)的發(fā)展,校園網(wǎng)規(guī)模不斷擴(kuò)大,網(wǎng)絡(luò)用戶越來(lái)越多,通過(guò)網(wǎng)絡(luò)來(lái)共享學(xué)校提供的資源和使用學(xué)校提供的服務(wù)。教務(wù)管理工作是高等學(xué)校的重要工作之一,隨著網(wǎng)絡(luò)和計(jì)算機(jī)技術(shù)的快速發(fā)展以及高校教育體制的不斷更新,天津大學(xué)的教務(wù)信息管理系統(tǒng)TMIS(Teaching Management Information System)為了適應(yīng)新的業(yè)務(wù)需求,利用先進(jìn)的規(guī)范化管理手段和信息技術(shù)不斷地進(jìn)行自我改進(jìn),但以往TMIS都是以Client/Sever技術(shù)為主,主要的教學(xué)管理工作都是由各學(xué)院的教務(wù)人員通過(guò)Client端負(fù)責(zé)完成。對(duì)于教師和學(xué)生直接參與的教學(xué)活動(dòng),如教學(xué)資源共享、選課管理和成績(jī)管理等,需要打破以前的管理模式,從C/S結(jié)構(gòu)中分離開(kāi),打造一個(gè)面向全體師生的可隨時(shí)異地互動(dòng)的網(wǎng)絡(luò)教學(xué)平臺(tái)。天津大學(xué)根據(jù)自身的特點(diǎn),結(jié)合多年的管理系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),設(shè)計(jì)開(kāi)發(fā)了一個(gè)集C/S 技術(shù)與 B/S技術(shù)于一體的綜合教務(wù)信息管理平臺(tái)?;贑/S的管理系統(tǒng)提供了強(qiáng)大的管理功能,其具體的設(shè)計(jì)方案請(qǐng)參見(jiàn)參考文獻(xiàn)[1]。為了解決Web應(yīng)用開(kāi)發(fā)過(guò)程中的開(kāi)發(fā)效率緩慢、代碼重用效率低、維護(hù)代碼繁瑣、擴(kuò)展性差等技術(shù)問(wèn)題,本文采用MVC(Model,模型,View,視圖,Controller,控制器)這種經(jīng)典設(shè)計(jì)模式" title="設(shè)計(jì)模式">設(shè)計(jì)模式應(yīng)用到開(kāi)發(fā)天津大學(xué)網(wǎng)絡(luò)教學(xué)平臺(tái)中,并使系統(tǒng)構(gòu)架在目前最流行的Struts Framework之上。本文將詳細(xì)討論struts技術(shù)作為一個(gè)良好的MVC框架,在實(shí)際Web開(kāi)發(fā)和設(shè)計(jì)中的應(yīng)用,并且凸顯出自己獨(dú)特的開(kāi)發(fā)優(yōu)勢(shì)。
1 Apache Struts Framework概述
1.1 JSP Model 2簡(jiǎn)介

  JSP Model 2是Java Web技術(shù)與MVC設(shè)計(jì)模式相結(jié)合的開(kāi)發(fā)模型[2]。MVC 模式的概念,即三個(gè)組件相互分離,當(dāng)模型的數(shù)據(jù)發(fā)生變化時(shí),控制器會(huì)通知視圖進(jìn)行刷新。MVC模式的出現(xiàn)實(shí)現(xiàn)了功能模塊和顯示模塊的分離,提高了設(shè)計(jì)、開(kāi)發(fā)的靈活性、可復(fù)用" title="復(fù)用">復(fù)用性和易維護(hù)性。
  JSP Model 2利用Servlet、JSP及Bean/EJB實(shí)現(xiàn)MVC結(jié)構(gòu),分別對(duì)應(yīng)著Controller、View和Model。其中使用Servlet接受請(qǐng)求,Servlet控制用戶的提交請(qǐng)求和輸出的回應(yīng),而JSP頁(yè)面只作為顯示層,Bean/EJB用作業(yè)務(wù)處理(事務(wù)處理或數(shù)據(jù)處理)。通過(guò)這種設(shè)計(jì)模式將對(duì)數(shù)據(jù)的顯示和業(yè)務(wù)邏輯的處理分開(kāi),使得整個(gè)系統(tǒng)的邏輯結(jié)構(gòu)更清晰合理,易于擴(kuò)展和維護(hù)。
1.2 Struts Framework的組成
  Struts是免費(fèi)使用的基于J2EE標(biāo)準(zhǔn)的開(kāi)發(fā)框架(framework),它充分體現(xiàn)了JSP Model 2的設(shè)計(jì)思路,并根據(jù)Web應(yīng)用和J2EE的特性做了適當(dāng)?shù)臄U(kuò)展。Struts是Apache組織的項(xiàng)目之一[3],其代碼開(kāi)發(fā)是從2000年5月份開(kāi)始的,到2001年6月,struts 1.0版本發(fā)布,至今為使用MVC體系開(kāi)發(fā)Web應(yīng)用提供了一個(gè)良好的框架。
  Struts包含了豐富的標(biāo)記庫(kù)和獨(dú)立于該框架工作的實(shí)用程序類,其中起關(guān)鍵作用的類有ActionServlet,Action,ActionMapping,ActionForm和ActionError。Action-
  Mapping類通過(guò)用戶定義的配置文件描述,允許ActionServlet將用戶的請(qǐng)求轉(zhuǎn)變?yōu)閼?yīng)用行為,根據(jù)映射的業(yè)務(wù)邏輯調(diào)用與之對(duì)應(yīng)的模型進(jìn)行后臺(tái)數(shù)據(jù)處理,完畢后由模型將結(jié)果返回至指定視圖。由此,struts框架通過(guò)核心組件的協(xié)同工作充分體現(xiàn)了M-V-C模式思路。
1.3 配置struts組件
  典型的struts應(yīng)用要用到web.xml、struts-config.xml和可選的應(yīng)用資源文件三種配置文件。開(kāi)發(fā)人員必須創(chuàng)建或者修改,使得Struts應(yīng)用能夠運(yùn)轉(zhuǎn)起來(lái)。
  Web.xml是web應(yīng)用的標(biāo)準(zhǔn)配置文件,是所有J2EE Web應(yīng)用必需的組成部分,Servlet/JSP容器使用這個(gè)文件來(lái)載入和配置相應(yīng)的應(yīng)用。Struts框架有ActionServlet和標(biāo)簽庫(kù)兩個(gè)組件需要使用從應(yīng)用部署描述符中配置(可選)。
  Struts-config.xml是struts應(yīng)用中最重要的配置文件,其中包含Action處理類、FromBean以及頁(yè)面的轉(zhuǎn)向等信息的配置。可以說(shuō)Struts應(yīng)用是一個(gè)依靠struts-config.xml文件把組件連接起來(lái)的網(wǎng)絡(luò)。struts-config.xml文件提供將邏輯名映射到物理路徑,使得物理路徑與程序路徑無(wú)關(guān),整個(gè)系統(tǒng)使用的邏輯名在Struts-config.xml中完成。尤其在大型Web應(yīng)用中,對(duì)于系統(tǒng)維護(hù)和升級(jí),這種管理頁(yè)面的方式顯示出其方便性和有效性。
1.4 Struts的處理流程
  (1)客戶通過(guò)瀏覽器訪問(wèn)JSP頁(yè)面,并填寫好表單" title="表單">表單,向服務(wù)器端發(fā)出請(qǐng)求。
  (2)控制器ActionServlet截獲該請(qǐng)求(以.do結(jié)尾的http請(qǐng)求),根據(jù)struts-config.xml中的配置信息查到與該請(qǐng)求相對(duì)應(yīng)的ActionForm和ActionClass,并使用前者封裝用戶提交的表單數(shù)據(jù),傳遞給后者使用。
  (3)ActionServlet調(diào)用ActionClass的Execute( )方法來(lái)進(jìn)行業(yè)務(wù)邏輯處理。即用JavaBean/EJB來(lái)封裝具體的業(yè)務(wù)操作,并提供業(yè)務(wù)邏輯接口,從而實(shí)現(xiàn)業(yè)務(wù)模塊" title="業(yè)務(wù)模塊">業(yè)務(wù)模塊的重用與分離。
  (4)根據(jù)Action處理的結(jié)果,返回一個(gè)ActionForward給ActionServlet,如果ActionForward指向另一個(gè)Action請(qǐng)求,重新開(kāi)始;通常是forward到另一個(gè)JSP頁(yè)面。
2 基于struts框架高校網(wǎng)絡(luò)教學(xué)平臺(tái)的具體實(shí)現(xiàn)
2.1 功能模塊設(shè)計(jì)

  天津大學(xué)OnLine-TMIS網(wǎng)絡(luò)教學(xué)平臺(tái)采用了基于MVC模式的Struts框架技術(shù),應(yīng)用了四層體系結(jié)構(gòu)的設(shè)計(jì)方案。功能設(shè)計(jì)上主要針對(duì)教學(xué)實(shí)施環(huán)節(jié)的設(shè)置,實(shí)現(xiàn)教師和學(xué)生之間的隨時(shí)隨地通過(guò)系統(tǒng)進(jìn)行教學(xué)互動(dòng)。
  OLTMIS主要功能模塊有:(1)用戶登陸模塊,用于權(quán)限保護(hù)和角色分配;(2)選課管理模塊;(3)成績(jī)管理模塊;(4)作業(yè)管理模塊;(5)課程信息管理模塊;(6)教學(xué)質(zhì)量評(píng)價(jià)模塊等,如圖1所示。


2.2 系統(tǒng)的構(gòu)架設(shè)計(jì)
  鑒于Web系統(tǒng)的跨平臺(tái)性、可擴(kuò)展性以及程序代碼的重用性,本文采用J2EE平臺(tái)和Struts框架技術(shù)來(lái)開(kāi)發(fā)整個(gè)系統(tǒng),分為四層結(jié)構(gòu)。從下到上各層功能描述分別是:
  (1)資源層:以數(shù)據(jù)庫(kù)的形式提供集中統(tǒng)一的數(shù)據(jù)。包括教務(wù)教學(xué)數(shù)據(jù)庫(kù)和教學(xué)資源數(shù)據(jù)庫(kù);采用Oracle 9i數(shù)據(jù)庫(kù)的解決方案。
  (2)業(yè)務(wù)邏輯層:對(duì)應(yīng)模型組件,處理具體的事務(wù)流程,根據(jù)制定的業(yè)務(wù)邏輯處理從表示層或數(shù)據(jù)層傳來(lái)的數(shù)據(jù),然后根據(jù)控制層的調(diào)度將數(shù)據(jù)流轉(zhuǎn)向數(shù)據(jù)層或表示層??杉?xì)分為業(yè)務(wù)組件層、公共組件層兩個(gè)子層。其中業(yè)務(wù)組件層是指按照不同業(yè)務(wù)邏輯創(chuàng)建的不同的類,實(shí)現(xiàn)具體的各種業(yè)務(wù)邏輯;公共組件層是公共調(diào)用的一些基礎(chǔ)類的包,通過(guò)這些bean可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢、修改等功能。
  (3)控制層:對(duì)應(yīng)控制器組件,Action Servlet用來(lái)實(shí)現(xiàn)業(yè)務(wù)流的控制,根絕表示層的請(qǐng)求,將數(shù)據(jù)轉(zhuǎn)入相應(yīng)的業(yè)務(wù)模塊,再將業(yè)務(wù)模塊處理的數(shù)據(jù)結(jié)果傳回表示層。
  (4)表示層:對(duì)應(yīng)視圖組件,用于生成頁(yè)面,用來(lái)收集用戶和系統(tǒng)的交互信息或者顯示業(yè)務(wù)模塊處理的數(shù)據(jù)結(jié)果。利用JSP技術(shù),廣泛使用STRUTS的自定義標(biāo)簽庫(kù),使代碼更為簡(jiǎn)化更為標(biāo)準(zhǔn)。
2.3 Struts框架的具體實(shí)現(xiàn)
  為了實(shí)現(xiàn)上述功能模塊,這里應(yīng)用Struts框架設(shè)計(jì)出系統(tǒng)的運(yùn)作流程和基本的配置文件。具體實(shí)現(xiàn)步驟為:
  (1)定義ActionMappings建立到應(yīng)用業(yè)務(wù)邏輯之間的聯(lián)系。
  (2)設(shè)計(jì)滿足View需求的所有支持對(duì)象。
  (3)基于每一個(gè)顯示對(duì)象提供的數(shù)據(jù)屬性來(lái)創(chuàng)建對(duì)應(yīng)的ActionForm對(duì)象。
  (4)設(shè)計(jì)被ActionMapping調(diào)用的Action對(duì)象。
  (5)設(shè)計(jì)應(yīng)用業(yè)務(wù)邏輯對(duì)象(Bean/EJB)。
  (6)對(duì)應(yīng)ActionMapping設(shè)計(jì)的流程創(chuàng)建JSP頁(yè)面。
  (7)根據(jù)設(shè)計(jì)內(nèi)容建立合適的配置文件struts-config.xml和web.xml。
  (8)開(kāi)展編碼、應(yīng)用測(cè)試和部署。
  以選課為例,學(xué)生登錄后進(jìn)行選課操作,如圖2所示ActionServlet截取學(xué)生選課確認(rèn)的HTTP請(qǐng)求,通過(guò)struts-config.xml中定義的映射關(guān)系(ActionMappings)找到與請(qǐng)求對(duì)應(yīng)的SLLSFormBean進(jìn)行數(shù)據(jù)封裝;通過(guò)SLLSActionBean的execute()入口方法調(diào)用選課處理模塊。處理的結(jié)果forward到事先指定的頁(yè)面,在瀏覽器中回顯給用戶。如果系統(tǒng)運(yùn)行中出現(xiàn)錯(cuò)誤,例如Action處理類運(yùn)行錯(cuò)誤,都會(huì)封裝到ActionError類中一起返回給頁(yè)面(struts專門提供進(jìn)行錯(cuò)誤處理的類)。


  其中主要用到的實(shí)際編寫代碼的文件有:
  (1)StuSlls.jsp:提供需要填寫的表單。
  (2)SLLSForm.java:用于封裝數(shù)據(jù)。
  (3)SLLSAction.java:處理類。
  其中核心代碼如下:
  public ActionForward execute(ActionMapping mapping,
  ActionForm form,HttpServletRequest request,
  HttpServletResponse response) throws Exception {
  //===check Session===//
  //選課和退課的業(yè)務(wù)操作,需要訪問(wèn)數(shù)據(jù)庫(kù)則調(diào)用
  //數(shù)據(jù)庫(kù)訪問(wèn)組件//
   }
  (4)所有對(duì)數(shù)據(jù)庫(kù)操作都封裝在Database類中,
  public class Database {
  public void setConnection()
  public Connection getConnection()
  public void setStatement()
  public Statement getStatement()
  public ResultSet SelectQuery(String sql)
  throws Exception
  public void UpdateQuery(String sql) throws
  Exception
  public void closeConnection() throws Exception
  }
  其中ActionServlet(Controller)的核心是Struts-config.xml,所有的映射關(guān)系將在這里進(jìn)行統(tǒng)一配置。尤其是在開(kāi)發(fā)大型復(fù)雜的Web應(yīng)用,對(duì)struts-config.xml要做綜合全面的考慮。這里提供一些核心配置片斷,使用的版本是Struts 1.1。
 ?。?xml version=′1.0′ encoding=′GBK′?>
 ?。?DOCTYPE struts-config PUBLIC ″-//Apache Software
  Foundation//DTD Struts Configuration 1.1//EN″ ″http://jakarta.
  apache.org/struts/dtds/struts-config_1_1.dtd″>
 ?。約truts-config>
 ?。?-------Form Bean Definitions ------>
  <form-beans>
 ?。糵orm-bean name=″LogonForm″
  type=″tju.mic.teaching.action.LogonForm″/>
  <form-bean name=″SllsForm″
  type=″tju.mic.teaching.action. SllsForm″/>
 ?。糵orm-bean name=″StuAchvForm″
  type=″tju.mic.teaching.action.StuAchvForm″/>
   ……
   </form-beans>
 ?。?-------Global Forward Definitions ------>
 ?。糶lobal-forwards>
  <forward name=″Welcome″ path=″/logon.jsp″/>
 ?。?global-forwards>
  <!--------Action Mapping Definitions -------->
   <action-mappings>
   <action name=″LogonForm″path=″/logon″
  input=″/logon.jsp″ scope=″request″
  type=″tju.mic.teaching.action.LogonAction″>
 ?。糵orward name=″student″ path=″/student.jsp″/>
 ?。糵orward name=″teacher″ path=″/teacher.jsp″/>
 ?。?action>
  <action name=″SllsForm″ path=″/stuslls″
  input=″/student/slls.jsp″ scope=″request″
  type=″tju.mic.teaching.action. SllsAction″>
 ?。糵orward name=″Forward″
  path=″/student/slls.jsp″/>
 ?。?action>
  ……
 ?。?action-mappings>
  ……
  </struts-config>
  Struts框架提供了完整的實(shí)用程序類(系統(tǒng)狀態(tài)類FormBean、動(dòng)作類ActionBean和控制器類Servlet),只需對(duì)其進(jìn)行配置,以及根據(jù)具體業(yè)務(wù)需求,對(duì)類進(jìn)行擴(kuò)展即可。另外struts提供的豐富的標(biāo)記庫(kù)與屬性文件使JSP頁(yè)面設(shè)計(jì)與業(yè)務(wù)邏輯實(shí)現(xiàn)徹底分離,開(kāi)發(fā)人員能夠集中精力各盡其責(zé),體現(xiàn)出基于框架開(kāi)發(fā)的高效性和易維護(hù)性。
  另外為了保證系統(tǒng)的可擴(kuò)展性和可重用性,增強(qiáng)代碼的規(guī)范度,本文采用組件設(shè)計(jì)思想,設(shè)計(jì)了大量的通用模塊,基礎(chǔ)類的包,其中包括了數(shù)據(jù)庫(kù)訪問(wèn)組件、用戶管理組件、統(tǒng)一認(rèn)證組件等。同時(shí)引入了軟件工程中協(xié)作開(kāi)發(fā)的概念和方法。設(shè)計(jì)之初只定義出類的接口和方法,因此在編寫代碼階段可以由不同人員負(fù)責(zé)不同組件及不同模型部分的開(kāi)發(fā),并引入軟件生命周期模型,使整個(gè)開(kāi)發(fā)過(guò)程實(shí)現(xiàn)流水線管理。
  本文論述了在開(kāi)發(fā)天津大學(xué)網(wǎng)絡(luò)教學(xué)平臺(tái)過(guò)程中使用先進(jìn)的Struts框架技術(shù),充分貫徹MVC這一經(jīng)典的軟件開(kāi)發(fā)模式。實(shí)踐證明,整個(gè)軟件開(kāi)發(fā)周期明顯縮短,并大大提高了代碼的可維護(hù)性和可復(fù)用性。并為逐步創(chuàng)(接上頁(yè))
  建校園級(jí)的協(xié)同信息平臺(tái)提供了一條有效的開(kāi)發(fā)設(shè)計(jì)思路和統(tǒng)一的技術(shù)規(guī)范,推動(dòng)了校園信息化的進(jìn)程。
參考文獻(xiàn)
1 王 贊,金志剛,董旭源.基于構(gòu)件技術(shù)的教務(wù)信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).微處理機(jī),2004;(1)
2 陸 榮,郁 洲,阮永良等.J2EE平臺(tái)上MVC設(shè)計(jì)模式的研究與實(shí)現(xiàn).計(jì)算機(jī)應(yīng)用研究,2003;(3)
3 Struts Tutorial[EB/OL].http://struts.apache.org/

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。