李力嘉
摘 要:在Java Web的教學(xué)過程中,會話技術(shù)是一個關(guān)鍵技術(shù),其內(nèi)容往往學(xué)生不易理解且容易混淆,在實際的使用中,不容易分清Cookie和Session的應(yīng)用場景,從而導(dǎo)致項目開發(fā)中出現(xiàn)種種困難。對此,本文針對該部分內(nèi)容的教學(xué)進(jìn)行思考,提出一種參考方案。
關(guān)鍵詞:面向應(yīng)用;循序漸進(jìn);興趣點
在Java Web的教學(xué)過程中,會話技術(shù)是一個關(guān)鍵技術(shù),其內(nèi)容往往學(xué)生不易理解且容易混淆,在實際的使用中,不容易分清Cookie和Session的應(yīng)用場景,從而導(dǎo)致項目開發(fā)中出現(xiàn)種種困難。對此,本文針對該部分內(nèi)容的教學(xué)進(jìn)行思考,為了讓學(xué)生更好地理解和使用該部分內(nèi)容,提出一種具體的教學(xué)參考方案。
本方案以“概—演—分—總—練”為主線,屏蔽復(fù)雜的背景理論,立足于實際應(yīng)用,以讓學(xué)生最快掌握會話技術(shù)的使用及注意事項,滿足高職階段學(xué)生的學(xué)習(xí)需求及學(xué)習(xí)特點。
一、概:
概述會話功能,通過實例引入會話功能的必要性。如以淘寶購物購物為例,每次點擊商品加入購物車,對應(yīng)一次請求,服務(wù)器將商品加入購物車為一次響應(yīng),那么多次添加購物車,則對應(yīng)多次請求和響應(yīng),而HTTP協(xié)議是無狀態(tài)協(xié)議,每一次請求和響應(yīng)是相互獨立的,不能互相進(jìn)行數(shù)據(jù)資源的共享,則每次加入購入車是相互獨立的,最終請求付款也是與加入購物車相互獨立,從而就不能用購物車的功能進(jìn)行統(tǒng)一付款了。以此突出會話技術(shù)的重要性及其實現(xiàn)資源共享的作用。
二、演:
直接面向應(yīng)用,屏蔽實現(xiàn)原理,以快速入門為目標(biāo),迅速抓住學(xué)生興趣點,以快速入門步驟為線索,演示兩種會話技術(shù)的使用步驟及應(yīng)用場景。
三、分:
分,即分出細(xì)節(jié)加以解釋和說明。此處所謂細(xì)節(jié),是結(jié)合教師的實際經(jīng)驗,化繁為簡,針對實際應(yīng)用中常見的細(xì)節(jié)問題加以講解,從而在教學(xué)中讓學(xué)生收獲的不但是知識,還有實際經(jīng)驗,提高教學(xué)實踐效率。
四、總:
分別總結(jié)Cookie和Session的特點及作用,充分利用常見的登錄賬號實例予以演示,同時充分使用瀏覽器開發(fā)者功能突出各個細(xì)節(jié),與學(xué)生一起解決實際問題,在解決問題過程中加深對兩種會話技術(shù)的理解和應(yīng)用場景的把握。
五、練:
以實際的項目案例需求為練習(xí),這樣做可以提升學(xué)生完成練習(xí)的成就感,同時讓練習(xí)更有針對性和實用性,避免原有脫離實際應(yīng)用的練習(xí)的局限性。同樣以Cookie的教學(xué)為例,在實際教學(xué)過程中,筆者常以B/S架構(gòu)項目常見的記住上一次的訪問時間需求為例,引導(dǎo)學(xué)生實現(xiàn)相應(yīng)功能。分別通過功能需求分析、實現(xiàn)功能方法分析和具體代碼的實現(xiàn)三個部分引導(dǎo)學(xué)生學(xué)會面對一個實際案例需求時的解決步驟及分析思想。
以記住訪問時間需求為例,筆者的教學(xué)過程如下:
①. 功能需求分析:引導(dǎo)學(xué)生理解需求,從而得到該功能對應(yīng)在程序中的具體要求是需要訪問一個Servlet,如果是第一次訪問,則提示:您好,歡迎您首次訪問,如果不是第一次訪問,則提示:歡迎回來,您上次訪問時間為:顯示時間字符串。
②.實現(xiàn)功能方法分析:回顧Cookie的功能,得到實現(xiàn)方式是:在服務(wù)器的servlet中判斷,請求是否有一個名字為:lastTime的cookie,如果有,則不是第一次訪問,如果沒有就是第一次訪問,對應(yīng)上述兩種情況,給出具體實現(xiàn),即回寫cookie,內(nèi)容為:lastTime:當(dāng)前時間。
③. 案例實現(xiàn)代碼:帶領(lǐng)學(xué)生按照步驟寫出具體的實現(xiàn)代碼,并在代碼編寫過程中,以步驟內(nèi)容為注釋,幫助學(xué)生理清編程思路,同時養(yǎng)成學(xué)生良好的編程習(xí)慣和編程風(fēng)格。部分課程代碼如下:
@WebServlet("/CookieCheckServlet")
public class CookieCheckServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設(shè)置響應(yīng)體的消息體的編碼格式:
response.setContentType("text/html;charset=utf-8");
//1. 獲取所有的cookie
Cookie[] cookies = request.getCookies();
//1.1 定義一個boolean的Flag來判斷是否找到對應(yīng)的cookie:
boolean flag = false;
//2. 遍歷獲得的cookies數(shù)組
if(cookies != null && cookies.length > 0){
for (Cookie c:cookies) {
//3.獲取各個cookie的名稱
String name = c.getName();
對于高職層次的學(xué)生的計算機教學(xué),應(yīng)當(dāng)充分把握學(xué)生的興趣點,在課程教學(xué)中要立足于實際應(yīng)用,才能把握住學(xué)生的學(xué)習(xí)興趣及注意力。針對學(xué)生特點,對所提的問題及所教授的知識點,要降低學(xué)生的思考門檻,循序漸進(jìn),逐步為之,結(jié)合筆者多年的教學(xué),采用上述五步教學(xué)法,在實際的計算機類課程的教學(xué)過程中取得了良好的效果。