蔡云鷺 林其堃 曾志廉
摘要:研究基于SVN版本控制系統(tǒng)的Java Web實(shí)驗(yàn)教學(xué)模式,從實(shí)驗(yàn)課程目標(biāo)和教學(xué)實(shí)踐的技術(shù)需求出發(fā),提出了基于SVN+Tomcat+MySQL開(kāi)發(fā)環(huán)境和NetBeans開(kāi)發(fā)工具的系統(tǒng)設(shè)置與管理方案。介紹了獨(dú)立實(shí)驗(yàn)和團(tuán)隊(duì)綜合實(shí)驗(yàn)的設(shè)置方法,總結(jié)了基于NetBeansIDE的實(shí)驗(yàn)流程, 實(shí)現(xiàn)了對(duì)實(shí)驗(yàn)項(xiàng)目的代碼進(jìn)行版本控制和托管。新實(shí)驗(yàn)?zāi)J较碌拇a同步、項(xiàng)目管理和團(tuán)隊(duì)協(xié)作使實(shí)驗(yàn)?zāi)J浇榆売谄髽I(yè)生產(chǎn)模式,有效地提高了學(xué)生的實(shí)驗(yàn)積極性和實(shí)驗(yàn)效率。
關(guān)鍵詞:Java Web實(shí)驗(yàn)教學(xué);Subversion;代碼同步;版本控制
中圖分類號(hào):TP391.7? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)14-0041-03
Abstract:To research Java Web course experimental teaching mode based on the technique of SVN version control. In order to achieve the goals ofexperimentalobjectives and the technical requirements of teaching, a System setup and management scheme based on SVN+Tomcat+MySQL and NetBeans IDE are proposed.The independent experiment and the team comprehensive experiment setup is introduced and the experimental process based on NetBeans IDE realizing the version control and hosting of the experimental code is summarized. The new experimental environment for code synchronization, project managementandteam collaborationrealize the connection between experimental teaching and corporate work mode, which effectively improves the teaching practice. Students' experimental enthusiasm and personal programming ability, teamwork awareness has also been significantly enhanced by the experimental method reform.
Key words: Java Web experiment teaching; Subversion; code synchronization;versioncontrol
1 前言
Java Web開(kāi)發(fā)技術(shù)是Java EE的核心技術(shù),是開(kāi)發(fā)各種Web應(yīng)用的首選技術(shù)之一。Java Web編程技術(shù)課程旨在培養(yǎng)學(xué)生掌握J(rèn)ava Web程序開(kāi)發(fā)的基本理論和核心技術(shù),課程的主要實(shí)驗(yàn)有:Servlet模型、HTTP請(qǐng)求與響應(yīng)對(duì)象、會(huì)話管理、JSP基本語(yǔ)法與頁(yè)面指令、Web組件重用與JavaBeans、JDBC訪問(wèn)數(shù)據(jù)庫(kù)、Servlet事件處理、Servlet過(guò)濾器的使用和MVC設(shè)計(jì)模式等。在傳統(tǒng)的實(shí)驗(yàn)教學(xué)模式下,教學(xué)側(cè)重于學(xué)生完成教學(xué)大綱規(guī)定的實(shí)驗(yàn)任務(wù),按要求完成相應(yīng)的實(shí)驗(yàn)報(bào)告,對(duì)學(xué)生能力培養(yǎng)的系統(tǒng)性以及工程應(yīng)用能力的培養(yǎng)重視不足,越來(lái)越難以滿足企業(yè)對(duì)Web開(kāi)發(fā)人員的專業(yè)素養(yǎng)和實(shí)踐技能的要求。目前,程序設(shè)計(jì)類實(shí)驗(yàn)教學(xué)不足之處主要表現(xiàn)在以下方面:1)學(xué)生的實(shí)驗(yàn)過(guò)程對(duì)教師是透明的,按照傳統(tǒng)的實(shí)驗(yàn)流程,學(xué)生的編碼過(guò)程只依賴機(jī)房計(jì)算機(jī)或個(gè)人計(jì)算機(jī),教師看到的只有最終呈現(xiàn)的實(shí)驗(yàn)結(jié)果,整個(gè)編碼過(guò)程對(duì)于教師幾乎是透明的,無(wú)法監(jiān)督過(guò)程,難以實(shí)施過(guò)程化考核;2)實(shí)驗(yàn)代碼收集、整理和運(yùn)行測(cè)試過(guò)程煩瑣,難以對(duì)代碼質(zhì)量進(jìn)行全面的測(cè)試和評(píng)估;3)項(xiàng)目代碼無(wú)法同步,一個(gè)實(shí)驗(yàn)項(xiàng)目往往難以在實(shí)驗(yàn)課堂的機(jī)房完成,學(xué)生希望實(shí)驗(yàn)課上的項(xiàng)目進(jìn)度能完好無(wú)損地同步到自己的個(gè)人計(jì)算機(jī),以持續(xù)開(kāi)發(fā),這個(gè)過(guò)程中的代碼同步問(wèn)題亟待高效的解決;4)缺乏高效的團(tuán)隊(duì)協(xié)作平臺(tái),在團(tuán)隊(duì)合作項(xiàng)目中,團(tuán)隊(duì)成員的開(kāi)發(fā)進(jìn)度難以掌握,代碼沖突等問(wèn)題在所難免,導(dǎo)致實(shí)驗(yàn)效果不佳,對(duì)團(tuán)隊(duì)協(xié)作的輕視往往與企業(yè)的團(tuán)隊(duì)開(kāi)發(fā)理念背道而馳。
將SVN版本控制系統(tǒng)引入到JavaWeb實(shí)驗(yàn)教學(xué)中,在SVN+Tomcat+MySQL開(kāi)發(fā)環(huán)境下,基于NetBeans或Eclipse集成開(kāi)發(fā)環(huán)境,通過(guò)構(gòu)建基于SVN的實(shí)驗(yàn)教學(xué)生態(tài)環(huán)境,可以有效解決以上問(wèn)題。Subversion(SVN)是一個(gè)開(kāi)源的集中式版本控制系統(tǒng),按照修改的版本來(lái)管理文件和目錄。每個(gè)SVN服務(wù)器系統(tǒng)存放若干個(gè)中心版本庫(kù),版本庫(kù)可以記錄每一次文件和目錄的修改,可以將文件和目錄回滾到以前的版本,并可以對(duì)比檢查所做的更改。SVN版本控制管理工具被廣泛應(yīng)用于軟件開(kāi)發(fā)過(guò)程。國(guó)內(nèi)外教育工作者也將SVN版本控制系統(tǒng)引入到在教學(xué)應(yīng)用或管理方面[4-6]。
2 系統(tǒng)架構(gòu)
系統(tǒng)集成了Subversion(https://subversion.apache.org)和Apache,基于B/S可視化模式,通過(guò)搭建Apache服務(wù)器與SVN管理網(wǎng)站(https://github.com/mfreiholz/iF.SVNAdmin),所有的信息都可以通過(guò)瀏覽器訪問(wèn),也可以通過(guò)NetBeans和Eclipse等集成開(kāi)發(fā)環(huán)境(IDE)訪問(wèn)SVN版本庫(kù),系統(tǒng)架構(gòu)如圖1所示。
系統(tǒng)具有以下特點(diǎn)。
1)操作界面友好。教師可以通過(guò)web瀏覽器管理SVN服務(wù)器,創(chuàng)建、修改、查看代碼倉(cāng)庫(kù)都變得十分簡(jiǎn)便。學(xué)生無(wú)需安裝客戶端,通過(guò)瀏覽器即可查看自己的項(xiàng)目文件或者提交進(jìn)度。
2)跨平臺(tái)和多地點(diǎn)工作。實(shí)驗(yàn)項(xiàng)目文件可以通過(guò)瀏覽器進(jìn)行訪問(wèn),允許學(xué)生可以通過(guò)不同的操作平臺(tái)快速查詢自己的SVN版本庫(kù)數(shù)據(jù)。服務(wù)器架設(shè)于校園網(wǎng),校外可以通過(guò)VPN訪問(wèn),無(wú)論是在機(jī)房、宿舍還是校外師生都可以隨時(shí)隨地訪問(wèn)代碼倉(cāng)庫(kù)。
3)與IDE緊密集成。目前的主流IDE,如NetBeans和Eclipse等都集成了SVN的開(kāi)發(fā)插件,學(xué)生易學(xué)易用,通過(guò)簡(jiǎn)單設(shè)置即可訪問(wèn)SVN版本庫(kù)。
3 SVN版本庫(kù)的設(shè)置與管理
在JavaWeb的實(shí)驗(yàn)教學(xué)中實(shí)驗(yàn)通常分為獨(dú)立實(shí)驗(yàn)和綜合實(shí)驗(yàn),獨(dú)立實(shí)驗(yàn)由個(gè)人獨(dú)立完成,綜合實(shí)驗(yàn)由小組成員共同合作完成。為達(dá)到預(yù)定的實(shí)驗(yàn)效果,對(duì)SVN的配置與管理方案成為關(guān)鍵。SVN具有完善的權(quán)限管理體系,其權(quán)限設(shè)置特點(diǎn)包括:可以為SVN中每個(gè)目錄設(shè)置相互獨(dú)立的讀寫權(quán)限;用戶對(duì)下層目錄的讀寫權(quán)限繼承自上層目錄,且對(duì)于下層目錄的權(quán)限不能大于上層;用戶對(duì)一個(gè)目錄的讀寫權(quán)限可以繼承自所屬用戶組,用戶對(duì)該目錄的權(quán)限可以高于用戶組權(quán)限。
3.1獨(dú)立實(shí)驗(yàn)的設(shè)置
獨(dú)立實(shí)驗(yàn)的設(shè)置與管理的基本要求是:學(xué)生之間不能相互查看實(shí)驗(yàn)代碼;教師可以查看或修改學(xué)生代碼;教師查看和測(cè)試代碼時(shí)應(yīng)該盡可能的便利和高效。
基于上述特點(diǎn),可以通過(guò)權(quán)限設(shè)置以滿足教學(xué)需求。具體規(guī)則:只創(chuàng)建一個(gè)代碼倉(cāng)庫(kù),并設(shè)置教師組和學(xué)生組;所有用戶組具有代碼倉(cāng)的根目錄的讀寫權(quán)限;根目錄下設(shè)置實(shí)驗(yàn)?zāi)0迥夸?,用于存放?shí)驗(yàn)要求和實(shí)驗(yàn)的模板,教師組對(duì)該目錄具有讀寫權(quán)限,學(xué)生組只有讀取權(quán)限;根目錄下每個(gè)學(xué)生都有自己的目錄,以學(xué)號(hào)命名,除了教師組和學(xué)生本人具有讀寫權(quán)限外,學(xué)生組的其他成員不具有任何權(quán)限。如圖2所示。
由于在SVN中每個(gè)倉(cāng)庫(kù)都有獨(dú)立的URL,所以獨(dú)立實(shí)驗(yàn)中只創(chuàng)建了一個(gè)代碼倉(cāng)庫(kù),教師只需要通過(guò)一個(gè)URL就可以訪問(wèn)到所有學(xué)生的所有實(shí)驗(yàn)項(xiàng)目,極大地方便了教師查閱;另一方面,由于學(xué)生不能訪問(wèn)別人的項(xiàng)目,有效達(dá)到了獨(dú)立完成實(shí)驗(yàn)的目的。
3.2綜合實(shí)驗(yàn)的設(shè)置
綜合實(shí)驗(yàn)的設(shè)置與管理要求是:不同項(xiàng)目組的代碼不能相互查看,但是組內(nèi)成員可以查看其他成員的代碼以跟進(jìn)項(xiàng)目開(kāi)發(fā)進(jìn)度或提出修改意見(jiàn);教師可以任意查看不同項(xiàng)目組的代碼以跟進(jìn)并指導(dǎo)實(shí)驗(yàn)。
由于版本控制系統(tǒng)的設(shè)計(jì)本來(lái)就是為了團(tuán)隊(duì)協(xié)作而產(chǎn)生,所以對(duì)于集體項(xiàng)目的設(shè)置相對(duì)于個(gè)人項(xiàng)目而言較為簡(jiǎn)單。權(quán)限設(shè)置方案:根據(jù)項(xiàng)目分組情況,為每個(gè)項(xiàng)目分配一個(gè)代碼倉(cāng)庫(kù);除了教師組對(duì)所有代碼倉(cāng)庫(kù)均具有讀寫權(quán)限外,每個(gè)項(xiàng)目組成員僅對(duì)所在組的代碼倉(cāng)庫(kù)具有讀寫權(quán)限,而對(duì)其他項(xiàng)目組的代碼倉(cāng)庫(kù)無(wú)讀寫權(quán)限;每個(gè)項(xiàng)目組成員可以查看組內(nèi)其他成員的代碼,以便與其他組員進(jìn)行團(tuán)隊(duì)協(xié)作。
3.3 SVN的用戶配置與權(quán)限管理
SVN是以配置文件的方式對(duì)用戶及其權(quán)限進(jìn)行配置,所有的用戶信息保存在passd文件中,文件的用戶信息記錄格式為:username:password。其中每條記錄對(duì)應(yīng)著一個(gè)用戶名和口令,password為加密后的口令而非明文口令。用戶必須經(jīng)授權(quán)才可以操作源碼倉(cāng)庫(kù),本例中為每個(gè)學(xué)生配置一個(gè)以學(xué)號(hào)命名的倉(cāng)庫(kù)文件夾,每個(gè)學(xué)生用戶均需要單獨(dú)授權(quán)。SVN中的授權(quán)文件為authz,其中的授權(quán)信息記錄內(nèi)容格式為:
[reponame:/floderpath]
username=authorization
其中reponame為倉(cāng)庫(kù)名字,floderpath是該倉(cāng)庫(kù)下授權(quán)給用戶的文件夾路徑;username為用戶名或用戶組名,組名前要加“@”前綴,;authorization為給予的權(quán)限,讀取權(quán)限為“r”,寫入權(quán)限為“w”。
Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼,為用戶提供了使用操作系統(tǒng)的接口。shell是解釋執(zhí)行的腳本語(yǔ)言,可直接調(diào)用linux命令,它是命令語(yǔ)言、命令解釋程序及程序設(shè)計(jì)語(yǔ)言的統(tǒng)稱?;赟VN的用戶配置與授權(quán)管理機(jī)制,結(jié)合本應(yīng)用中用戶配置與權(quán)限管理場(chǎng)景,可以編寫shell腳本實(shí)現(xiàn)批量建立學(xué)生用戶。首先,可以使用Excel或其他文本編輯工具建立用戶列表文件錄入用戶名及口令,保存為文本文件格式備用;然后運(yùn)行Shell腳本程序遍歷用戶文件,每次讀取一個(gè)用戶名和口令,重復(fù)以下三個(gè)步驟。
1)新增用戶
調(diào)用apache服務(wù)器內(nèi)置的程序htpasswd生成用戶口令的md5密文,把用戶名及其口令的md5密文寫入到SVN配置文件passd中(例:/usr/bin/htpasswd -bd /home/svn/passd $USERNAME $PASSWORD),建立新用戶,并把新用戶添加到學(xué)生組(student)中。
2)調(diào)用SVNAPI,為每個(gè)新用戶新增一個(gè)倉(cāng)庫(kù)文件夾
例:svn mkdir -m "INFO: create a new folder for $USERNAME" $URL/$USERNAME
其中$URL是通過(guò)apache訪問(wèn)文件夾的URL。
3)新用戶授權(quán)
為SVN配置文件autuz新增記錄,為新用戶授權(quán)。每個(gè)用戶對(duì)自己的文件夾有讀寫權(quán)限,同用戶組的其他成員對(duì)該文件夾沒(méi)有讀寫權(quán)限,至此新增用戶結(jié)束,新用戶可以通過(guò)用戶名與口令訪問(wèn)SVN,具有對(duì)已授權(quán)目錄的讀寫權(quán)限。
4 基于SVN版本庫(kù)的實(shí)驗(yàn)教學(xué)
基于NetBeansIDE的實(shí)驗(yàn)流程如圖3所示。
1)拷貝實(shí)驗(yàn)?zāi)0澹瑒?chuàng)建自己的實(shí)驗(yàn)副本(Copy)
實(shí)驗(yàn)?zāi)0迥夸浿刑峁┝烁鱾€(gè)實(shí)驗(yàn)的實(shí)驗(yàn)要求、實(shí)驗(yàn)指導(dǎo)以及實(shí)驗(yàn)?zāi)0?,學(xué)生在進(jìn)行實(shí)驗(yàn)前需要將對(duì)應(yīng)實(shí)驗(yàn)的目錄拷貝到以自己學(xué)號(hào)命名的目錄。
2)在實(shí)驗(yàn)?zāi)0宓幕A(chǔ)上進(jìn)行實(shí)驗(yàn)操作(Modify)
學(xué)生在自己的目錄下按照1)中拷貝的實(shí)驗(yàn)要求和實(shí)驗(yàn)指導(dǎo),利用實(shí)驗(yàn)?zāi)0暹M(jìn)行實(shí)驗(yàn)操作。
3)提交或保存實(shí)驗(yàn)代碼(Commit)
學(xué)生提交或保存實(shí)驗(yàn)代碼可以將代碼提交至服務(wù)器,教師可以通過(guò)服務(wù)器跟蹤實(shí)驗(yàn)進(jìn)度(如圖4)。如果實(shí)驗(yàn)未完成或者需要繼續(xù)完善,則可以通過(guò)Copy操作將代碼下載到本地計(jì)算機(jī)。
5 總結(jié)
基于SVN技術(shù)構(gòu)建的全新實(shí)驗(yàn)環(huán)境重構(gòu)了傳統(tǒng)的實(shí)驗(yàn)方式。有利于學(xué)生適應(yīng)企業(yè)開(kāi)發(fā)模式和流程,提高了競(jìng)爭(zhēng)力;教師能更多地參與到學(xué)生的實(shí)驗(yàn)開(kāi)發(fā)過(guò)程,為收集實(shí)驗(yàn)代碼提供了便利;鍛煉了學(xué)生團(tuán)隊(duì)協(xié)作能力。Web開(kāi)發(fā)是當(dāng)今IT行業(yè)發(fā)展最快速的領(lǐng)域之一,新技術(shù)、新模式不斷涌現(xiàn),高校教學(xué)應(yīng)緊跟發(fā)展趨勢(shì),追蹤技術(shù)熱點(diǎn),綜合利用各種技術(shù)進(jìn)行教學(xué)內(nèi)容與實(shí)驗(yàn)?zāi)J降闹貥?gòu)。
參考文獻(xiàn):
[1] 王貴鑫,昝鄉(xiāng)鎮(zhèn).基于團(tuán)隊(duì)協(xié)作的項(xiàng)目驅(qū)動(dòng)教學(xué)模式實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2018,35(5):205-207.
[2] 鐘文鋒,付小龍,杜炤.基于SVN的校級(jí)統(tǒng)一信息系統(tǒng)版本管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)教育信息化,2011(23):55-57.
[3] 石樂(lè)義,李陽(yáng).網(wǎng)絡(luò)安全在線開(kāi)放實(shí)驗(yàn)實(shí)踐探索[J].實(shí)驗(yàn)室研究與探索,2018,37(9):215-219.
[4] 楊健,陳春玲,宗平.版本控制工具軟件Subversion在課程設(shè)計(jì)中的應(yīng)用[J].計(jì)算機(jī)教育,2008(4):117-121.
[5] Reid K L,Wilson G V.Learning by doing[J].ACM SIGCSE Bulletin,2005,37(1):272-276.
[6] 王海豐,李金霞,張?chǎng)H.基于SVN版本控制的程序設(shè)計(jì)類課程教學(xué)研究[J].軟件,2018,39(4):218-221.
[7] Mike Mason.陶文譯.版本控制之道:使用Subversion[M].北京:電子工業(yè)出版社,2007.
[8] 李存燕,洪玫.Github中開(kāi)發(fā)人員的行為特征分析[J].計(jì)算機(jī)科學(xué),2019,46(2):152-158.
[9] 郭穎奇,肖勇.新技術(shù)驅(qū)動(dòng)下的高校實(shí)驗(yàn)教學(xué)發(fā)展及研究綜述[J].實(shí)驗(yàn)室研究與探索,2017,36(9):179-183.
[10] 李永飛,郭曉欣.Java Web應(yīng)用開(kāi)發(fā)課程目標(biāo)的研究與設(shè)定[J].計(jì)算機(jī)教育,2018(5):127-129.
[11] 甘玲.基于項(xiàng)目開(kāi)發(fā)的面向?qū)ο蠓椒ㄕn程教學(xué)新模式[J].計(jì)算機(jī)教育,2014(4):43-46.
【通聯(lián)編輯:王力】