王崟 陸莉莉
【摘 要】Java Web應用開發是軟件技術Java開發方向中一門非常重要的崗位能力課程。在這門課的學習中,學生常常因為Web服務器基本原理的不理解導致入門困難。本文列舉了學生在初學Java web開發課程時遇到的困難,討論了解決和改進措施,對該課程中web服務器原理的教學內容、教學方法提出幾點建議。
【關鍵詞】Java web課程;web服務器原理
0 引言
現在高職院校軟件技術專業中大多設有Java開發方向,而Java開發方向中的Java Web應用開發是一門十分重要的崗位能力課程,該課程中通常會包含JSP、servlet等服務端編程技術,還會包含MVC、Struts甚至SSH等框架的內容。而在這們課程的基本教學中,學生往往缺乏對HTTP協議的基本理解和認識,只知道在瀏覽器中輸入網址就能看到頁面,卻不理解動態頁面的執行過程。能簡單使用Tomcat等web服務器,卻不知道web服務器起到作用,基本原理的缺失直接影響到這門課的學習效果。本人通過教學經驗,淺談Java Web課程中關于web服務器原理部分教學的探索。
1 Java web應用開發課程的初學者學情分析
從該課程的教學中以及學生的反饋中,發現學生初學這門課時面臨一些由于web服務器原理不理解而導致的課程入門困難,主要問題如下:
(1) Java web應用開發課程一般會開設在Java程序設計、靜態網頁技術(例如HTML、CSS)、客戶端編程技術(例如JavaScript)課程之后 。學生已經具備了基本的Java編程能力以及網頁設計的能力。
(2)學生掌握了靜態網頁技術,會編寫簡單的HTML頁面,但是在靜態網頁技術開發課程中,往往都是以直接打開HTML文件的方式在瀏覽器中查看頁面效果,學生理解和掌握的是如何用HTML代碼設計出頁面。而在實際的使用中,頁面是通過HTTP協議從遠程的服務器上傳輸到客戶端的瀏覽器上顯示的,對于這一點,學生沒有清晰的概念。
(3)在JavaScript課程中,直接打開頁面就能體驗到JavaScript代碼的執行。但是當JavaScript代碼和java代碼都摻雜在頁面中的時候,很多學生不清楚兩者的區別,不知道兩種代碼的執行場合。
(4)不清楚web服務器起到的作用,知道啟動Tomcat,知道要把網站部署在Tomcat中,但是卻不知道為什么要部署。很多學生很疑惑為什么靜態頁面和其中的JavaScript代碼,直接打開頁面就可以查看結果,而包含有Java代碼的JSP頁面必須部署在web服務器上才能通過輸入URL的方式訪問。
(5)手動部署應用的能力欠缺。課程開始都會介紹Java web應用中服務器中的部署結構,但是之后的授課中往往還是使用Myeclipse或者Eclipse for JavaEE之類的集成開發環境進行開發。而在集成開發環境下部署web應用往往是一鍵完成的,簡單快捷,習慣了這種方式的學生脫離了集成開發環境之后幾乎不知道如何部署。
2 解決和改進措施
2.1 逐步引導學生建立web服務器的概念
在Java web課程開始的時候,教師可以用兩步提問的方式引導學生建立web服務器的概念。在學習網頁設計的時候往往是直接用瀏覽器打開本機的頁面文件,而在實際上網的時候是在瀏覽器里輸入網址進行訪問。學生都有瀏覽網頁的經驗,非常容易體會其中的差異。在這個階段用靜態HTML頁面為例即可,先不涉及動態頁面。
(1)問題1
為什么實際上網的時候,用戶不會從本機直接打開一個網頁文件?網站的頁面在用戶的電腦上嗎?通過這個問題可以引導學生理解頁面并不是存儲于用戶的電腦里,而是在遠程某臺/些稱之為服務器的計算機里。
(2)問題2
用戶輸入一個網址之后,遠程的服務器是如何找到用戶想看的頁面?如何把頁面傳送給用戶的?通過這個問題,以讓學生初步了解在網站的服務器上需要有一個稱之為web服務器的程序,該程序會管理網站的頁面,接受瀏覽器發出的請求,找到需要的頁面,將頁面發送給用戶。
通過上面的兩個問題,可以讓學生建立起web服務器的基本概念,更多的web服務器功能可以在之后的教學中逐漸補充。
2.2 強化瀏覽器的工作原理和URL的組成
由于瀏覽網頁需要瀏覽器和web服務器之間的通信,最常見的方式就是在瀏覽器的地址欄中輸入網址,可以以這個為入口強化學生對于瀏覽器功能的理解。
首先分析URL的組成部分,學生知道理解這個俗稱網址的字符串的由三部分組成,通過這個請求可以確定達遠程的服務器,以及服務器上的具體某個頁面。此時還是繼續使用靜態的HTML頁面為例,讓學生知道基本的請求過程即可。
2.3 用瀏覽器的開發者工具查看HTTP請求和響應
在介紹瀏覽器和URL的時候,只是簡單的描述請求和響應。接下來可以具體介紹HTTP協議,HTTP協議對學生來說非常抽象,看不見摸不著,很難建立起直觀的認識。這種情況下可以利用瀏覽器的開發者工具直接查看HTTP請求和響應,Firefox或者chrome都是不錯的選擇。
老師可以帶領學生在瀏覽器里輸入一個網址,直接查看該請求的HTTP請求頭和消息體,同時還可以查看該請求的HTTP響應頭和響應體。這樣學生可以觀察到瀏覽器向遠程的服務發送了什么消息,又收到了什么回應,可以看到HTTP響應體里攜帶的HTML代碼。通過這個方式學生不但可以知道HTTP協議的作用,也可以看到網頁從遠程服務器發送到本地的原始樣子和其在瀏覽器中展示后的效果。更加深了對于瀏覽器功能的理解。
演示和查看了HTTP GET方式的請求和響應之后,還可以演示一下表單的POST方式提交,讓學生了解兩種方式的異同。
學生查看了不同的HTTP請求和響應之后,老師可以對請求頭和響應頭的最基本成分做簡單的解釋,學生初步了解即可,更多的細節后續課程中遇到了再詳細介紹。
2.4 以實際的Java程序模擬簡單的web服務器
展示一個簡單的Java程序,該程序使用socket和瀏覽器進行通信,模擬web服務器的功能,管理幾個簡單的靜態頁面。通過該程序學生可以了解web服務器接收HTTP請求,找到資源并發送給瀏覽器的全過程,既可以幫助學生理解web服務器的工作原理,也可以查看瀏覽器發來的HTTP請求。
2.5 以案例片段幫助學生理解客戶端程序和服務端程序的區別
用靜態頁面幫助學生理解web服務器的基本功能之后,接下來就是要讓學生初步理解客戶端程序和服務端程序的區別,也要引入web服務器執行服務端代碼的功能。
首先,老師可以帶領學生閱讀一段嵌入了Java代碼的JSP頁面片段,代碼盡量簡單,可以配合部分數據表,用兩次不同的訪問,寫出不同的運行結果(HTML頁面)。讓學生體會到服務端的動態頁面要在web服務器上執行,每次執行產生的HTML文件可能不同,最終發給用戶的響應是執行后的HTML代碼。
之后,帶領學生訪問一個包含有JavaScript代碼的頁面,查看其HTTP響應消息,可以看到JavaScript代碼隨著HTML代碼傳給了瀏覽器。通過這個例子可以說明JavaScript代碼是在瀏覽器端執行的。
2.6 漸進式開展手動部署應用的教學
在傳統的教學中往往是在課程開始時一次性介紹java web應用的部署方式,學生學學過之后并沒有深刻的體會,甚至都沒有手動部署過一次應用。而Java Web應用中有靜態頁面、動態頁面,JavaBean,servlet,jar包、其它資源等,部署描述文件的內容也根據不同的情況有區別,必須進行多次的練習才能掌握應用的部署。對此問題可以采用下面方法解決:
課程開始之初,還沒有涉及JSP和servlet語法的時候,可以帶領學生部署幾個靜態頁面,學習如何設置應用的歡迎頁面。
在學習到servlet、JSP、JavaBean之后,除了用集成開發環境部署應用之外,挑選一些應用要求學生用手動部署方式進行部署,讓學生熟悉部署文件夾結構和web.xml文件結構。
由于學生容易在資源的路徑問題上出錯,在部署時還要特別強化對于其它資源的組織和部署。
3 結語
Java Web應用開發是軟件技術Java方向中是一門十分重要的課程。本文探討了Web服務器原理對這門課程入門的重要性,教學中常見的問題和解決方法。
【參考文獻】
[1]孫衛琴.Tomcat與Java Web開發技術詳解(第二版)[M].電子工業出版社,2009.
[責任編輯:朱麗娜]