• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于SSH框架的遠(yuǎn)程教學(xué)平臺的實現(xiàn)

      2010-12-07 06:57:50劉英哲
      中國遠(yuǎn)程教育 2010年17期
      關(guān)鍵詞:遠(yuǎn)程教學(xué)配置文件代碼

      □ 劉英哲

      基于SSH框架的遠(yuǎn)程教學(xué)平臺的實現(xiàn)

      □ 劉英哲

      本文介紹了目前主流遠(yuǎn)程教學(xué)平臺存在的缺陷,并提出了以SSH框架技術(shù)為支撐構(gòu)架遠(yuǎn)程教學(xué)平臺的設(shè)計方案。平臺系統(tǒng)在設(shè)計開發(fā)過程中使用了Maven進(jìn)行項目管理,降低了系統(tǒng)各個模塊之間的耦合度,使得代碼的復(fù)用性大大提高,同時增強了系統(tǒng)的穩(wěn)定性和可擴展性。

      遠(yuǎn)程教學(xué)平臺;Spring;Hibernate;Maven

      一、引言

      隨著信息技術(shù)特別是網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的發(fā)展,我國遠(yuǎn)程教育發(fā)展已經(jīng)進(jìn)入了新的歷史時期。構(gòu)建靈活開放的終身教育體系,大力發(fā)展現(xiàn)代遠(yuǎn)程教育,建設(shè)以衛(wèi)星、電視和互聯(lián)網(wǎng)等為載體的遠(yuǎn)程開放繼續(xù)教育及公共服務(wù)平臺[1],已經(jīng)成為未來十年遠(yuǎn)程教育發(fā)展的奮斗目標(biāo)。作為遠(yuǎn)程教育主要載體的遠(yuǎn)程教學(xué)平臺因其設(shè)計上的缺陷而暴露出越來越多的問題,主要體現(xiàn)在三個方面:首先是教學(xué)平臺系統(tǒng)響應(yīng)速度較慢;其次是系統(tǒng)的界面較為單一,用戶缺乏學(xué)習(xí)興趣,導(dǎo)致訪問量降低;第三是系統(tǒng)在軟件設(shè)計上結(jié)構(gòu)較為簡單,各個部分代碼耦合性較強。這些實際存在的問題制約了當(dāng)前遠(yuǎn)程教育的快速發(fā)展。

      二、遠(yuǎn)程教學(xué)平臺設(shè)計缺陷成因分析

      目前,數(shù)以千萬計的用戶正借助網(wǎng)絡(luò)手段進(jìn)行遠(yuǎn)程學(xué)習(xí)。而隨著用戶數(shù)量的增加,教學(xué)平臺的并發(fā)訪問數(shù)也不斷攀升,這就導(dǎo)致單位時間內(nèi)需要同時處理的業(yè)務(wù)數(shù)量大幅度增加,因此要求教學(xué)平臺有更快的處理速度。分析表明,網(wǎng)絡(luò)程序處理速度的快慢主要依賴于數(shù)據(jù)庫訪問層部分,因為數(shù)據(jù)庫的訪問是一個較為復(fù)雜的流程,首先需要建立到數(shù)據(jù)庫的連接,然后提供用戶名密碼等待數(shù)據(jù)庫認(rèn)證,認(rèn)證成功后,要發(fā)送SQL語句等待數(shù)據(jù)庫語法校驗,成功后數(shù)據(jù)庫將符合要求的數(shù)據(jù)返回給網(wǎng)絡(luò)程序,最后還需要關(guān)閉數(shù)據(jù)庫的連接。因此,如何降低數(shù)據(jù)庫訪問次數(shù)成為網(wǎng)絡(luò)程序需要解決的關(guān)鍵問題。目前的主要解決方案有兩種:第一種就是建立集群,提高數(shù)據(jù)庫服務(wù)器的處理性能。這種方案的優(yōu)點是實行簡單,程序不需要修改大段的代碼,只要設(shè)置好數(shù)據(jù)庫的負(fù)載均衡就能夠完成。然而這種方案的缺點就是造價較高,需要耗費大量的資金。第二種方案就是在網(wǎng)絡(luò)程序的數(shù)據(jù)訪問層加上數(shù)據(jù)庫訪問緩存,將對數(shù)據(jù)庫訪問的結(jié)果緩存在內(nèi)存中,程序在需要數(shù)據(jù)的時候首先訪問緩存,如果有相應(yīng)的數(shù)據(jù)就不再連接數(shù)據(jù)庫,避免不必要的開銷。這個方案從根本上減少了數(shù)據(jù)庫訪問的次數(shù),不需耗費額外資金,同樣可以達(dá)到提升系統(tǒng)處理速度的目的。

      作為教學(xué)平臺組成部分的界面設(shè)計也是評估系統(tǒng)性能重要指標(biāo)之一。近年來各個網(wǎng)頁瀏覽器之間的標(biāo)準(zhǔn)逐漸統(tǒng)一,綜合使用CSS+HTML+JavaScript的XHTML技術(shù)逐漸流行,瀏覽器標(biāo)準(zhǔn)中對文檔對象模型的支持還有異步加載XML的XMLHttpRequest對象使得異步加載網(wǎng)頁成為了可能,同時減少了服務(wù)器和瀏覽器之間的通訊量,使程序依舊能維持原來的功能。

      目前教學(xué)平臺的后臺代碼設(shè)計中經(jīng)常摻雜著各種邏輯業(yè)務(wù)的控制邏輯甚至是直接訪問數(shù)據(jù)庫的語句,這也是系統(tǒng)整體性能下降的因素之一。復(fù)雜的邏輯設(shè)計使功能固化嚴(yán)重,結(jié)構(gòu)難以修改,如果想要添加或者修改功能,就必須要讀懂頁面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層的代碼。隨著項目規(guī)模變大,修改的難度也會大大增加。

      通過以上分析,理想的遠(yuǎn)程教學(xué)平臺應(yīng)能夠同時滿足以下幾個條件:模塊化,即將程序劃分成若干模塊,各個模塊之間的職責(zé)清晰,使程序結(jié)構(gòu)一目了然;界面層既能支持傳統(tǒng)的網(wǎng)頁交互式瀏覽,也能提供基于AJAX的異步瀏覽模式;程序可擴展性強,能夠根據(jù)實際需要增加或修改流程。

      三、基于SSH框架技術(shù)的遠(yuǎn)程教學(xué)平臺的實現(xiàn)

      (一)主要技術(shù)介紹

      1.Maven

      Maven是基于項目對象模型(POM),可以通過一小段描述信息來管理項目的構(gòu)建、報告和文檔的軟件項目管理工具。同一般的自動編譯軟件相比,它主要有以下兩個優(yōu)點。

      (1) Maven具有默認(rèn)的項目文件結(jié)構(gòu)的規(guī)則,不需要編寫額外的配置文件來說明如何編譯、測試和對項目代碼進(jìn)行打包。由于項目都遵循了默認(rèn)的規(guī)則,程序員可以在較短的時間內(nèi)熟悉項目的規(guī)則,而且任何IDE都可以對項目進(jìn)行編輯,程序員可以使用各自擅長的編程軟件。

      (2)Maven對項目進(jìn)行建模,將項目的構(gòu)建劃分為若干生命周期,不需要對項目進(jìn)行任何說明,只需要簡單的指令就可以自動進(jìn)行代碼測試、項目打包和自動部署等功能。

      本文的系統(tǒng)使用了Maven多模塊設(shè)計方式,將系統(tǒng)不同的功能劃分成單獨的項目,各個項目之間的依賴由Maven進(jìn)行維護(hù),這就在更大的程度上隔離了各個模塊的代碼,使得項目維護(hù)以及單元測試更加快捷方便。

      2.MVC結(jié)構(gòu)

      系統(tǒng)主體結(jié)構(gòu)采用MVC架構(gòu),MVC指的是模型(Model)、視圖(View)和控制器(Controller)三個部分。這三個部分的聯(lián)系方式如圖1所示。

      使用MVC的目的是將模型和視圖的實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。在本系統(tǒng)中,為了今后能夠開發(fā)出Web Service等其他新的表現(xiàn)形式,最便捷的方式就是能夠重用原有的業(yè)務(wù)邏輯和數(shù)據(jù)訪問代碼,如果系統(tǒng)使用了MVC的架構(gòu),服務(wù)層和數(shù)據(jù)表現(xiàn)層是相互分離的,那么就可以方便地在Web Service中調(diào)用原來的服務(wù)層代碼,大大減少了重復(fù)開發(fā)工作。

      3.SSH框架

      SSH是Struts+Spring+Hibernate 3種技術(shù)的有機融合,是目前應(yīng)用最廣泛的J2EE架構(gòu)[2]。Struts是目前較為流行的基于MVC的框架,它主要充當(dāng)了控制器的角色,負(fù)責(zé)接收用戶的輸入、調(diào)用服務(wù)層的方法后將得到的結(jié)果返回給數(shù)據(jù)表現(xiàn)層。Hibernate充當(dāng)了模型的角色,它使用XML文件將數(shù)據(jù)庫的字段和實體類字段之間的關(guān)系對應(yīng)起來,將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)在程序中直接變?yōu)槌绦蛑械膶ο?。除此以外,Hibernate提供了功能強大的事務(wù)管理和緩存機制,教學(xué)平臺的業(yè)務(wù)邏輯層通過Hibernate的緩存訪問數(shù)據(jù)可以減少數(shù)據(jù)庫的開銷,提高程序的處理速度。Spring在程序中充當(dāng)了裝配工廠的角色,通過XML配置文件將各個子層的實例組織起來,將各個子層之間的依賴關(guān)系集中表現(xiàn)在配置文檔中,使得系統(tǒng)結(jié)構(gòu)更加清晰合理。

      (二)遠(yuǎn)程教學(xué)平臺系統(tǒng)模塊設(shè)計

      遠(yuǎn)程教學(xué)系統(tǒng)按用戶身份不同主要分為兩大子系統(tǒng):教師子系統(tǒng)和學(xué)生子系統(tǒng)。教師子系統(tǒng)為教師提供了日常教學(xué)所需要的功能。教師通過資源管理模塊可以查看自己所負(fù)責(zé)課程的所有資源,對過時的資源進(jìn)行及時的更新或刪除,使學(xué)生隨時可以接觸到該門學(xué)科的最新進(jìn)展。相對于傳統(tǒng)的以課本為主的教學(xué)方式,教師可以在教學(xué)平臺上隨時添加各種類型的文本、圖片甚至視頻文件來提高學(xué)生學(xué)習(xí)的興趣,進(jìn)而加深學(xué)生對該課程的理解。教學(xué)管理界面不僅為教師提供了學(xué)生在學(xué)習(xí)平臺上的學(xué)習(xí)記錄,還提供教師的行為記錄,方便教師隨時調(diào)整教學(xué)進(jìn)度。教師在論壇中可以發(fā)起討論,和學(xué)生互動,解答學(xué)生在學(xué)習(xí)中遇到的問題。

      學(xué)生功能包含資源瀏覽、資源檢索和論壇應(yīng)用。學(xué)生除了可以按課程檢索到相應(yīng)的資源,還可以通過資源訪問量、資源最近更新日期等條件檢索自己感興趣的資源。學(xué)生可以在論壇中和其他同學(xué)、老師一起討論課程中的問題,發(fā)表自己的觀點。

      系統(tǒng)還包含了一些教師與學(xué)生共用的功能,包括收藏夾、個人信息維護(hù)、站內(nèi)所搜等功能,便于用戶更方便的使用系統(tǒng)其他功能。圖2分別為教師子系統(tǒng)和學(xué)生子系統(tǒng)模塊設(shè)計邏輯圖。

      (三)遠(yuǎn)程教學(xué)平臺系統(tǒng)架構(gòu)設(shè)計

      本系統(tǒng)采用MVC架構(gòu),因此在設(shè)計上被劃分成若干子層,各個子層之間相互獨立,使用接口對實現(xiàn)的細(xì)節(jié)進(jìn)行封裝。系統(tǒng)分層示意圖如圖3所示。

      系統(tǒng)在實現(xiàn)時使用Maven進(jìn)行項目管理,將每一層都劃分成獨立的項目,然后在各個項目之間建立依賴關(guān)系。各個子項目之間的關(guān)系如圖3所示。

      Maven將系統(tǒng)抽象成為項目模型(POM),首先建立一個父項目,對各個項目共用的屬性進(jìn)行匯總,例如測試函數(shù)庫、編譯器設(shè)置等。配置文件部分代碼如下:

      配置文件向Maven闡述了該項目所需要的函數(shù)庫的名稱和版本,以及該函數(shù)庫的作用。

      系統(tǒng)的主要模塊從下至上分別為數(shù)據(jù)持久層、系統(tǒng)服務(wù)層、界面表現(xiàn)層。數(shù)據(jù)持久層負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行交互,將讀取到的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換成系統(tǒng)能夠處理的業(yè)務(wù)對象。這一部分主要使用了Hibernate進(jìn)行對象關(guān)系映射(ORM),用XML文檔將數(shù)據(jù)庫的字段映射為各個實體類的屬性。系統(tǒng)服務(wù)層調(diào)用數(shù)據(jù)持久層的服務(wù)并使用各種業(yè)務(wù)流程處理得到的數(shù)據(jù),服務(wù)層也承擔(dān)著負(fù)責(zé)劃分事務(wù)界限的任務(wù)。數(shù)據(jù)服務(wù)層將處理好的數(shù)據(jù)提交到界面表示層,表示層只負(fù)責(zé)將數(shù)據(jù)顯示在模板頁面上和將用戶輸入的數(shù)據(jù)傳遞到數(shù)據(jù)服務(wù)層上,它不對數(shù)據(jù)進(jìn)行任何處理。

      下面以管理員模塊中用戶管理系統(tǒng)為例,具體分析Struts+Hibernate+Spring多框架在系統(tǒng)中的應(yīng)用。

      此部分主要功能是對用戶進(jìn)行增加、刪除以及修改權(quán)限。例如要增加一個系統(tǒng)用戶,輸入用戶信息并提交后,通過Struts調(diào)用AddUserAction的execute方法,業(yè)務(wù)層Service接口的實現(xiàn)類,再間接調(diào)用DAO接口的實現(xiàn)類。DAO接口的實現(xiàn)類封裝了通過Hibernate訪問數(shù)據(jù)表對應(yīng)持久化對象的CRUD操作。以下給出Spring的applicationContext.xml配置文件部分代碼段:

      通過以上配置代碼,spring將負(fù)責(zé)界面層的strutsAction和負(fù)責(zé)服務(wù)層的userSerivces聯(lián)系在了一起,strutsAction在自己的代碼中設(shè)置了userServices這一屬性,由Spring進(jìn)行依賴注入。

      Struts采用struts-config.xml作為配置文件。在這個配置文件中,struts配置了Spring組件DelegatingRequestProcessor來讓Spring托管各個組件。代碼如下:

      配置文件剩下的部分完全不需要再做其他改動,將Spring帶來的影響降到了最低。

      四、總結(jié)

      當(dāng)前,基于Struts、Hibernate和Spring多框架整合方案及相關(guān)技術(shù)在一些系統(tǒng)項目開發(fā)得到廣泛應(yīng)用,其原因是這3個框架均為開源性框架,有著豐富而且免費的技術(shù)文檔資料和開發(fā)背景;架構(gòu)的整體設(shè)計采用了MVC模式,把表示層與業(yè)務(wù)層進(jìn)行了很好的分離。

      由于使用maven進(jìn)行項目管理,系統(tǒng)可以方便的升級自己的函數(shù)庫并重新打包部署到遠(yuǎn)程服務(wù)器上。整個項目由于進(jìn)行了適當(dāng)?shù)姆謱?,項目對分布式開發(fā)有良好的支持。通過適當(dāng)?shù)母膭?,系統(tǒng)即可以支持遠(yuǎn)程函數(shù)調(diào)用(RMI),通過遠(yuǎn)程函數(shù)的方式,系統(tǒng)可以和其他的程序進(jìn)行通訊,而不再像舊版本程序直接共享數(shù)據(jù)庫。這樣做使得數(shù)據(jù)安全性大大增加,并且將教學(xué)系統(tǒng)的可擴展性提升到了一個新的高度。

      [1]國家中長期教育改革和發(fā)展規(guī)劃綱要(2010-2020年).

      [2]楊海斌.基于SSH框架的高校網(wǎng)站群內(nèi)容管理系統(tǒng)設(shè)計[J].軟件導(dǎo)刊,2009,(9).

      [3]祝智庭.教育信息化:教育技術(shù)的新高地[J].中國電化教育,2001,(2):5-8.

      [4]王磊杰,崔軍波,韓紅宇等.Java EE開發(fā)指南-基于Spring/Struts/Hibernate的實現(xiàn)[M].北京:北京人民郵電出版社,2007.

      [5]李剛.輕量級J2EE企業(yè)應(yīng)用實戰(zhàn):Struts+Spring+Hibernate整合開發(fā)[M].北京:電子工業(yè)出版社,2007.

      [6]Maven http://maven.a(chǎn)pache.org[EB/OL].

      2010-05-30

      劉英哲,工程師,學(xué)士,天津廣播電視大學(xué)現(xiàn)代教育技術(shù)中心(300191)。

      責(zé)任編輯 柯 南

      G40-057

      B

      1009—458x(2010)09—0069—04

      猜你喜歡
      遠(yuǎn)程教學(xué)配置文件代碼
      提示用戶配置文件錯誤 這樣解決
      ??漆t(yī)師規(guī)范化培訓(xùn)遠(yuǎn)程教學(xué)督導(dǎo)的思考與啟示
      “對截止日期更通融些”:教師們從上輪遠(yuǎn)程教學(xué)中學(xué)到了什么
      英語文摘(2021年5期)2021-07-22 08:46:14
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      忘記ESXi主機root密碼怎么辦
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      自治县| 马鞍山市| 探索| 定日县| 阿勒泰市| 彭泽县| 洛扎县| 河曲县| 蚌埠市| 北碚区| 钟山县| 民县| 永济市| 玉山县| 白玉县| 米林县| 台南市| 邯郸县| 文水县| 盐池县| 依兰县| 蓬莱市| 卫辉市| 永春县| 舟山市| 贵溪市| 泸西县| 天全县| 大荔县| 潞西市| 应城市| 日照市| 大庆市| 扎兰屯市| 丽江市| 祁阳县| 乌兰察布市| 昆明市| 高平市| 府谷县| 仁化县|