張艷明



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