張艷明
摘要: 作為Java Web動(dòng)態(tài)網(wǎng)站開發(fā)的核心基礎(chǔ)技術(shù),Servlet編程是大學(xué)Java Web開發(fā)課程實(shí)驗(yàn)教學(xué)體系的重要組成部分。本文從實(shí)驗(yàn)設(shè)計(jì)理念、實(shí)驗(yàn)基本原理、實(shí)驗(yàn)執(zhí)行過程以及實(shí)驗(yàn)總結(jié)等方面對(duì)Servlet基礎(chǔ)實(shí)驗(yàn)進(jìn)行綜述和分析,最后給出總結(jié)和思考。
關(guān)鍵詞: 動(dòng)態(tài)網(wǎng)頁開發(fā); Servlet; Java Web開發(fā)
中圖分類號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)20-0080-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Abstract:As the core basic technology of Java Web dynamic website development, Servlet programming is an important part of the experimental teaching system of Java Web development course in universities. In this paper, the basic experiment of Servlet is summarized and analyzed from the aspects of experimental design concept, experimental basic principle, experimental execution process and experimental summary. Finally, the summary and thinking are given.
Key words:modularization; teaching reform; java web development course;
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展及普及,Web應(yīng)用開發(fā)技術(shù)教學(xué)日益受到高等教育的重視和關(guān)注[1]。Java Web應(yīng)用開發(fā)課程主要教授用于構(gòu)建互聯(lián)網(wǎng)站、開發(fā)網(wǎng)絡(luò)應(yīng)用的Web開發(fā)技術(shù),使得學(xué)生掌握常用Web應(yīng)用開發(fā)工具的使用,具備中小型Web應(yīng)用系統(tǒng)開發(fā)、部署和調(diào)試的能力。Java Web開發(fā)課程是一門實(shí)踐性非常強(qiáng)的軟件開發(fā)類專業(yè)課程,實(shí)驗(yàn)教學(xué)是該課程教學(xué)活動(dòng)的重要組成部分[2]。作為Java Web 技術(shù)的核心基礎(chǔ),Servlet的學(xué)習(xí)和實(shí)踐效果對(duì)于奠定學(xué)生Java Web開發(fā)的扎實(shí)基礎(chǔ)具有極其重要的作用。本文對(duì)Java Web開發(fā)課程Servlet基礎(chǔ)實(shí)驗(yàn)的設(shè)計(jì)思路、執(zhí)行過程進(jìn)行系統(tǒng)性的綜述,并在最后給出總結(jié)和思考。
1 Servlet概述
Servlet是Sun公司提供的一種基于Java語言的動(dòng)態(tài)Web網(wǎng)頁開發(fā)技術(shù)。一個(gè)Servlet是運(yùn)行在Web服務(wù)器上的基于Java語言的一個(gè)應(yīng)用程序,也稱為服務(wù)器小應(yīng)用程序,它的基本作用是在B/S(瀏覽器/服務(wù)器)架構(gòu)下,對(duì)客戶端發(fā)送的請(qǐng)求進(jìn)行響應(yīng)處理[3] [4]。Web服務(wù)器可以將瀏覽器發(fā)送的HTTP請(qǐng)求對(duì)應(yīng)到一個(gè)程序(比如Servlet),由程序經(jīng)過各種處理,生成動(dòng)態(tài)變化的內(nèi)容,再由Web服務(wù)器傳回給瀏覽器以顯示。
2 實(shí)驗(yàn)設(shè)計(jì)
作為奠定學(xué)生學(xué)習(xí)Java Web動(dòng)態(tài)網(wǎng)站開發(fā)的重要基礎(chǔ),對(duì)Servlet實(shí)驗(yàn)的設(shè)計(jì)理念和執(zhí)行過程進(jìn)行了精心的構(gòu)造和梳理。實(shí)驗(yàn)內(nèi)容設(shè)定為開發(fā)一個(gè)Servlet程序,實(shí)現(xiàn)把HTML頁面內(nèi)容“響應(yīng)”給瀏覽器,同時(shí)嵌入動(dòng)態(tài)時(shí)間信息,要求將Servlet部署在Tomcat服務(wù)器上并配置Servlet訪問路徑,最后通過瀏覽器正確訪問。
2.1設(shè)計(jì)理念
Servlet基礎(chǔ)實(shí)驗(yàn)的設(shè)計(jì)遵循“實(shí)用性、典型性、啟發(fā)性、操作性”四原則,在有限的時(shí)間內(nèi)達(dá)到一個(gè)良好的實(shí)驗(yàn)效果。
1)實(shí)用性:Servlet是一門重要的動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù),其技術(shù)和原理在企業(yè)開發(fā)中被大量運(yùn)用;
2)典型性:強(qiáng)調(diào)典型原理細(xì)節(jié),要求深刻理解蘊(yùn)含的理論知識(shí),對(duì)Servlet原理的深刻理解對(duì)于今后的web開發(fā)學(xué)習(xí)將起到事半功倍的作用;
3)啟發(fā)性:鼓勵(lì)學(xué)生研究Servlet的“模板方法”機(jī)制,為今后企業(yè)級(jí)框架開發(fā)技術(shù)的學(xué)習(xí)做鋪墊;
4)操作性:突出實(shí)驗(yàn)動(dòng)手能力,實(shí)驗(yàn)采取現(xiàn)場(chǎng)答辯驗(yàn)收,要求學(xué)生動(dòng)手演示并進(jìn)行分析。
2.2實(shí)驗(yàn)原理
2.2.1 Servlet的開發(fā)原理
Servlet的開發(fā)遵循SUN公司提供的Servlet API規(guī)范,通常選擇繼承 javax.http.servlet.HttpServlet,并重寫doGet()或者doPost()方法,以響應(yīng)瀏覽器提交的HTTP get或者post請(qǐng)求。doGet或者doPost方法有兩個(gè)重要的參數(shù)對(duì)象,分別是HttpServletRequest對(duì)象和HttpServletResponse對(duì)象。在Servlet開發(fā)中,通過HttpSerlvetRequest對(duì)象獲取客戶端發(fā)送給服務(wù)器的請(qǐng)求信息,通過HttpServletResponse對(duì)象向客戶端傳回響應(yīng)。
Servlet的開發(fā)不需要編寫main方法,對(duì)應(yīng)的客戶端get請(qǐng)求到來時(shí),服務(wù)器自動(dòng)調(diào)用Servlet的doGet方法,如果是post請(qǐng)求,則自動(dòng)調(diào)用doPost方法。
2.2.2 Servlet的訪問原理
Servlet的訪問路徑可以通過web.xml文件或者注解進(jìn)行配置,其中,web.xml的配置步驟包括注冊(cè)和映射兩個(gè)環(huán)節(jié)。一個(gè)
2.2.3 Servlet的響應(yīng)原理
服務(wù)器在接收到客戶端User Agent(通常是瀏覽器)發(fā)送的HTTP請(qǐng)求之后,根據(jù)web.xml文件中的Servlet配置信息,將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的Servlet。服務(wù)器中的Servlet容器自動(dòng)創(chuàng)建一個(gè)HttpServletRequest對(duì)象,將HTTP請(qǐng)求信息進(jìn)行封裝。在Servlet開發(fā)中可以根據(jù)HttpServletRequest對(duì)象獲取相關(guān)請(qǐng)求信息,并根據(jù)需要進(jìn)行相應(yīng)的業(yè)務(wù)邏輯操作。同時(shí),Servlet容器自動(dòng)創(chuàng)建一個(gè)HttpServletResponse對(duì)象,用以生成響應(yīng)數(shù)據(jù),并經(jīng)過服務(wù)器傳回給發(fā)送請(qǐng)求的客戶端User Agent。Servlet的響應(yīng)序列圖如圖2所示。
2.3實(shí)驗(yàn)過程
2.3.1 Servlet的編寫
利用開發(fā)工具新建一個(gè)Web網(wǎng)站工程(假定名稱為servletDemo),在src目錄下編寫一個(gè)Java類,繼承自javax.servlet.http.HttpServlet,重寫HttpServlet類的doGet()或doPost()方法。方法體里通過Java Date類對(duì)象獲取當(dāng)前時(shí)間信息,通過HttpServletResponse的輸出方法,向客戶端響應(yīng)一個(gè)普通HTML頁面,其中包含動(dòng)態(tài)產(chǎn)生的時(shí)間信息。主要代碼如下:
2.3.3 部署訪問
將完成了程序開發(fā)和路徑配置的Servlet進(jìn)行編譯,并將編譯后的class文件部署到Tomcat服務(wù)器之中,并通過瀏覽器輸入正確的URL地址進(jìn)行訪問,輸出響應(yīng)結(jié)果。在Java Web開發(fā)中,Servlet編譯之后的部署位置有具體的要求,要求將其部署在WEB-INF目錄之下classes目錄之中,包含完整的包名。
正確完成部署之后,訪問的URL地址路徑需要書寫正確,否則服務(wù)器會(huì)返回404狀態(tài)碼,表示無法找到對(duì)應(yīng)的資源。針對(duì)Servlet訪問路徑的正確寫法是在web.xml文件中的配置路徑之前加上http://IP地址(域名):服務(wù)器端口號(hào)/當(dāng)前應(yīng)用。針對(duì)本文案例和環(huán)境,IP地址代表Tomcat服務(wù)器所在的主機(jī)IP地址,如果是本機(jī)訪問,可以用127.0.0.1或者localhost本地域名來表示。端口號(hào)代表Tomcat服務(wù)器對(duì)外提供服務(wù)的端口號(hào),假定為8080(不同的服務(wù)器配置的端口號(hào)可能不一樣)。當(dāng)前應(yīng)用則是2.3.1小節(jié)所新建的網(wǎng)站名稱servletDemo。因此,訪問以上部署在本機(jī)Tomcat服務(wù)器上的Servlet,完整的訪問路徑為:
2.3.4 實(shí)驗(yàn)分析和要求
Servlet實(shí)驗(yàn)中有一些需要重點(diǎn)注意的環(huán)節(jié)。Servlet的開發(fā)需要嚴(yán)格遵循Servlet API規(guī)范,要求學(xué)生對(duì)Servlet API規(guī)范有透徹的理解。Servlet的訪問路徑配置通常以“/”開頭,這里的“/”代表當(dāng)前應(yīng)用根目錄,要求學(xué)生對(duì)服務(wù)器里的當(dāng)前應(yīng)用根目錄和當(dāng)前站點(diǎn)根目錄有很好的認(rèn)識(shí)和區(qū)分。最后需要特別注意的是,Servlet中編寫的doGet、doPost等方法由服務(wù)器在需要的時(shí)候自動(dòng)調(diào)用,稱之為“回調(diào)方法”或者“模板方法”,要求學(xué)生對(duì)Servlet的運(yùn)行原理和開發(fā)機(jī)制進(jìn)行深入的分析,進(jìn)一步了解模板方法在軟件開發(fā)中的具體應(yīng)用和實(shí)現(xiàn)原理,為今后更深入的動(dòng)態(tài)網(wǎng)頁開發(fā)框架技術(shù)學(xué)習(xí)奠定良好的前期基礎(chǔ)。
3 實(shí)驗(yàn)總結(jié)
Java Web應(yīng)用系統(tǒng)開發(fā)課程面向具備一定Java編程基礎(chǔ)的本??茖W(xué)生,強(qiáng)調(diào)知識(shí)的應(yīng)用場(chǎng)景,突出可操作性和動(dòng)手實(shí)踐性。Servlet編程作為Java Web動(dòng)態(tài)網(wǎng)站開發(fā)的核心基礎(chǔ)技術(shù),實(shí)驗(yàn)的設(shè)計(jì)和學(xué)習(xí)效果在課程學(xué)習(xí)體系中占據(jù)著重要的地位。本文對(duì)Servlet基礎(chǔ)實(shí)驗(yàn)的實(shí)驗(yàn)原理、設(shè)計(jì)理念和執(zhí)行過程等進(jìn)行了全面的闡述和分析。從近幾年的實(shí)際教學(xué)反饋來看,取得了較好的效果。當(dāng)前,在信息化浪潮的推動(dòng)下,大學(xué)傳統(tǒng)教學(xué)方式正在不斷發(fā)生著演化和變革。如何借助更加現(xiàn)代化和開放式的新型教學(xué)理念,是今后值得研究的方向。
參考文獻(xiàn):
[1] 黃正寶.高職Java Web開發(fā)課程體系構(gòu)建與教學(xué)實(shí)施[J].電腦知識(shí)與技術(shù),2016,12(34):146-148.
[2] 徐勝舟.項(xiàng)目驅(qū)動(dòng)法在Java Web程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2012(24):116-119.
[3] 樊振宇.深入理解SERVLET和JSP原理[J].電腦知識(shí)與技術(shù),2011,7(11):2570-2573.
[4] 鄒靖霖,李樹英.用Servlet開發(fā)Web應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2000(3) :125-128.
【通聯(lián)編輯:唐一東】