《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 基于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é)平臺的開發(fā)與實(shí)現(xiàn),體現(xiàn)出struts技術(shù)在Web應(yīng)用開發(fā)中的強(qiáng)大功效。
  關(guān)鍵詞: Struts框架 模型-視圖-控制器 Web應(yīng)用 教務(wù)系統(tǒng)


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

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

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


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


  其中主要用到的實(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ù)操作,需要訪問數(shù)據(jù)庫則調(diào)用
  //數(shù)據(jù)庫訪問組件//
   }
  (4)所有對數(shù)據(jù)庫操作都封裝在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)一配置。尤其是在開發(fā)大型復(fù)雜的Web應(yīng)用,對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″>
  <struts-config>
 ?。?-------Form Bean Definitions ------>
  <form-beans>
 ?。糵orm-bean name=″LogonForm″
  type=″tju.mic.teaching.action.LogonForm″/>
 ?。糵orm-bean name=″SllsForm″
  type=″tju.mic.teaching.action. SllsForm″/>
  <form-bean name=″StuAchvForm″
  type=″tju.mic.teaching.action.StuAchvForm″/>
   ……
   </form-beans>
 ?。?-------Global Forward Definitions ------>
  <global-forwards>
 ?。糵orward 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″>
  <forward name=″student″ path=″/student.jsp″/>
 ?。糵orward name=″teacher″ path=″/teacher.jsp″/>
  </action>
 ?。糰ction name=″SllsForm″ path=″/stuslls″
  input=″/student/slls.jsp″ scope=″request″
  type=″tju.mic.teaching.action. SllsAction″>
  <forward name=″Forward″
  path=″/student/slls.jsp″/>
 ?。?action>
  ……
  </action-mappings>
  ……
 ?。?struts-config>
  Struts框架提供了完整的實(shí)用程序類(系統(tǒng)狀態(tài)類FormBean、動作類ActionBean和控制器類Servlet),只需對其進(jìn)行配置,以及根據(jù)具體業(yè)務(wù)需求,對類進(jìn)行擴(kuò)展即可。另外struts提供的豐富的標(biāo)記庫與屬性文件使JSP頁面設(shè)計與業(yè)務(wù)邏輯實(shí)現(xiàn)徹底分離,開發(fā)人員能夠集中精力各盡其責(zé),體現(xiàn)出基于框架開發(fā)的高效性和易維護(hù)性。
  另外為了保證系統(tǒng)的可擴(kuò)展性和可重用性,增強(qiáng)代碼的規(guī)范度,本文采用組件設(shè)計思想,設(shè)計了大量的通用模塊,基礎(chǔ)類的包,其中包括了數(shù)據(jù)庫訪問組件、用戶管理組件、統(tǒng)一認(rèn)證組件等。同時引入了軟件工程中協(xié)作開發(fā)的概念和方法。設(shè)計之初只定義出類的接口和方法,因此在編寫代碼階段可以由不同人員負(fù)責(zé)不同組件及不同模型部分的開發(fā),并引入軟件生命周期模型,使整個開發(fā)過程實(shí)現(xiàn)流水線管理。
  本文論述了在開發(fā)天津大學(xué)網(wǎng)絡(luò)教學(xué)平臺過程中使用先進(jìn)的Struts框架技術(shù),充分貫徹MVC這一經(jīng)典的軟件開發(fā)模式。實(shí)踐證明,整個軟件開發(fā)周期明顯縮短,并大大提高了代碼的可維護(hù)性和可復(fù)用性。并為逐步創(chuàng)(接上頁)
  建校園級的協(xié)同信息平臺提供了一條有效的開發(fā)設(shè)計思路和統(tǒng)一的技術(shù)規(guī)范,推動了校園信息化的進(jìn)程。
參考文獻(xiàn)
1 王 贊,金志剛,董旭源.基于構(gòu)件技術(shù)的教務(wù)信息系統(tǒng)的設(shè)計與實(shí)現(xiàn).微處理機(jī),2004;(1)
2 陸 榮,郁 洲,阮永良等.J2EE平臺上MVC設(shè)計模式的研究與實(shí)現(xiàn).計算機(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)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容