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