傳智播客會話管理教程
課程介紹:
1 載入web應用資源檔案
2 cookie入門
3 cookie詳解
4 cookie案例-使用者上次造訪時間1
5 cookie案例-使用者最後造訪時間2
6 cookie案例-瀏覽過的商品
7 session技術詳解
#播放位址:http://www.php.cn/course/564.html
講師特質:思路嚴謹,認真,懂得把握要點,讓同學知道什麼時候需要重點去記憶,學的輕鬆,學的快。
困難分析:cookie 原則要點;
## coookie與session的相同點與不同點; 課件下載位址:http://www.php.cn/xiazai/code/2083
因為HTTP協定時無狀態的協議,所以WEB伺服器對用戶的每次請求都當做是全新的請求。但是很多WEB應用程式的需求中需要保存上一次請求的某些資訊。為了解決這個問題,會話與狀態管理的問問題就產生了。在影片中,相關知識點包括:WEB應用程式中的會話與會話狀態,Cookie,在Servlet程式中使用Cookie,Session,Session的典型案例,Session的持久化管理。 所謂會話,是指一個客戶端瀏覽器與WEB伺服器之間連續發生的一系列請求和回應過程。 WEB應用程式的會話狀態是指WEB伺服器與瀏覽器在會話過程中產生的狀態訊息,借助會話狀態,WEB伺服器能夠把屬於同一會話中的一系列的請求和響應過程關聯起來。 例如某個使用者從網站的登入頁面登入後,再進入購物頁面購物時,負責處理購物請求的伺服器程式必須知道處理上一次要求的程式所得到的使用者#資訊.由於HTTP協定是一種無狀態的協議,WEB伺服器本身不能識別出哪些請求是同一個瀏覽器發出頭字段。 Set-Cookie2頭欄位中設定的cookie內容是具有一定格式的字串,它必須以Cookie的名稱
和設定值開頭,格式為"名稱=值",後面可以加上0個或多個以分號(;)和空格分隔的其它可選屬性,
屬性格式一般為"屬性名=值"。
最後說明瀏覽器回傳Cookie的求求頭欄位。瀏覽器使用Cookie請求頭字段將Cookie資訊回送
給WEB伺服器。多個Cookie資訊透過一個Cookie請求頭字段回送給WEB伺服器。瀏覽器是否發送某個
Cookie訊息根據下面的幾個規則決定:
1.請求的主機名稱是否與某個儲存的Cookie的Domain屬性相符
2.請求的連接埠號碼是否在該Cookie的Port屬性清單中
3.所要求的資源路徑是否在該Cookie的Path屬性指定的目錄及子目錄中
4.此Cookie的有效期限是否已過Cookie請求頭字段中的每個Cookie之間用逗號(,)或分號(;)分
隔。 Cookie請求頭欄位中除了必須有"名稱=值"的設定外,還可以有Version、Path、Domain、Port
等幾個屬性。但是如果要設定Version、Path、Domain、Port等屬性時,需要在屬性名稱之前增加一個
"$"字元作為前綴,並且Version屬性只能出現一次,並且要位於Cookie請求頭字段設定值的最前面,
如果需要設定某個Cookie訊息的Path、Domain、Port等屬性,它們必須位於該Cookie資訊的"名稱=
值"設定之後。 Path屬性要注意的是該屬性指向子目錄的Cookie要排在Path屬性指向父目錄的
Cookie之前。例如:Cookie: $Version=1; Course=Java; $Path=/it315/lesson; Course=vc;
$Path=/it315。該Cookie就符合上述約束。影片教學中示範了一個具體的實例:
代码一: Cookie ckName = new Cookie("name",name); Cookie ckNickname = new Cookie("nickname",nickname); ckNickname.setMaxAge(365*24*3600); Cookie ckEmail = new Cookie("email","test1@it315.org"); Cookie ckPhone = new Cookie("phone","1111111"); response.addCookie(ckName); response.addCookie(ckNickname); response.addCookie(ckEmail); response.addCookie(ckPhone);
代码二: String lastNickname = null; Cookie [] cks = request.getCookies(); for(int i=0; cks!=null && i<cks.length; i++) { if("nickname".equals(cks[i].getName())) { lastNickname = cks[i].getValue(); break; } } if(lastNickname != null) { out.println("欢迎您," + lastNickname ); }
以上程式碼片段一是產生四個名稱分別為name、nickname、email、phone的Cookie資訊。 name和
nickname這兩個Cookie的值是透過請求參數來設定的,並且nickname這個Cookie保持有效的時間為1
年,email和phone這兩個cookie的值是在程式中硬編碼指定的。程式碼片段在二是在產生Cookie訊息
之後接著從請求訊息中找出名稱為nickname的Cookie訊息,並根據回傳結果列印出對應的問候語,
片段中也列印出請求訊息中的Cookie頭欄位的值。
了解會話的概念和Cookie技術,接下來對Session做了詳細的介紹與範例示範。這段影片主要講解
了什麼是Session、Session的追蹤機制、Session的逾時管理、HttpSession介面中的方法、
HttpServletRequest介面中的Session方法、application與session域範圍的屬性比較、利用
Cookie實現Session追蹤、利用URL重寫實作Session追蹤。這些技術都是以後要常用來的。
使用Cookie和附加URL參數都可以將上一次請求的狀態資訊傳遞到下一次請求中,但是如果傳遞
的狀態資訊較多,將極大降低網路傳輸效率和增大伺服器端程式處理的難度,為了解決這個問題,
Session技術就產生了。 Session技術是一種將會話狀態保存在伺服器端的技術。在會話過程中,客
戶端需要接收、記憶和回送 Session的會話標識號,Session可以且通常是藉助Cookie來傳遞會話標
識號。就如看到的那樣,Cookie和Session往往是協同工作的,這樣就能解決Http協定無狀態的性質
。有了Session這個概念,就需要程式來實現,然後讓伺服器能夠成功追蹤具體的某一個Session。
在Servlet API規範中,定義了一個HttpSession接口,HttpSession接口定義了各種管理和操作會
話狀態的方法。 WEB伺服器產生的HttpSession物件是保持會話狀態資訊的儲存結構,一個客戶端在
WEB伺服器端對應一個各自的HttpSession物件。 WEB伺服器並不會在客戶端開始存取它時就創建
HttpSession對象,只有客戶端存取某個能與客戶端開啟會話的Servlet程式時,WEB應用程式才會創
#建立一個與該客戶端對應的HttpSession物件。 WEB伺服器為每個HttpSession物件指派一個獨一無二的
會話標識號,然後在回應訊息中將這個會話標識號傳遞給客戶端。客戶端需要記住會話標識號,並在
後續的每次存取請求中都把這個會話標識號傳送給WEB伺服器,WEB伺服器端程式依據回傳的會話標識
號就知道這次請求是哪個客戶端發出的,從而選擇與之對應的HttpSession物件。因為伺服器端的資
來源是有限的,不能無限制的保存HttpSession對象,所以WEB應用程式創建了與某個客戶端對應的
HttpSession对象后,只要没有超出一个限定的空闲时间段,HttpSession对象就驻留在WEB服务器内
存之中,该客户端此后访问任意的Servlet程序时,它们都使用与客户端对应的那个已存在的
HttpSession对象。HttpSession接口中专门定义了一个setAttribute方法来将对象存储到
HttpSession对象中,还定义了一个getAttribute方法来检索存储在HttpSession对象中的对象,存
储进HttpSession对象中的对象可以被属于同一个会话的各个请求的处理程序共享。
前面提到的服务器资源有限,WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无
法检测客户端浏览器是否关闭,所以,即使客户已经离开或关闭了浏览器,WEB服务器还要保留与之
对应的HttpSession对象。但是随着时间的推移而不断增加新的访问客户端,WEB服务器内存中将会
因此积累起大量的不再被使用的HttpSession对象,并将最终导致服务器内存耗尽。因此WEB服务器
采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发
出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的
HttpSession对象变成垃圾。如果客户端浏览器超时后再次发出访问请求,WEB服务器则认为这是一
个新的会话的开始,将为之创建新的HttpSession对象和分配新的会话标识号。虽然会有少数出现事
实上的同一会话,却产生两次HttpSession对象,但是相对于大量正常的访问请求,这种情况基本上
可以忽略了。在Servlet API中,会话的超时间隔可以在web.xml文件中设置,其默认值由Servlet容
器定义。
例如:<session-config> <session-timeout>30</session-timeout> </session-config>
下面拿出视频中的一个小例子来说明一下使用Session实现购物车:
String courseSelect = request.getParameter("course"); if(courseSelect != null){ Vector vCourses = (Vector)session.getAttribute("courses"); if(vCourses == null){ vCourses = new Vector(); vCourses.add(courseSelect); session.setAttribute("courses",vCourses); } else{ if(vCourses.contains(courseSelect)){ out.println(sessionName + ",你以前选择过了" + courseSelect + "<hr>"); } else{ vCourses.add(courseSelect); } } }
上面的代码首先判断访问请求是否来自一个已登录用户,如果不是,则将请求重定向到logon.html页
面。接着判断当前访问请求是否是用户选择课程时发出的,如果是,则将用户选择的课程加入购物车
。最后显示出所有供选择的课程列表和已放入购物车中的课程列表。
以上是傳智播客會話管理教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

得物APP是當前十分火爆品牌購物的軟體,但是多數的用戶不知道得物APP中功能如何的使用,下方會整理最詳細的使用教程攻略,接下來就是小編為用戶帶來的得物多功能使用教學匯總,有興趣的用戶快來一起看看吧!得物使用教學【2024-03-20】得物分期購怎麼使用【2024-03-20】得物優惠券怎麼獲得【2024-03-20】得物人工客服怎麼找【2024-03-20】得物取件碼怎麼查看【2024-03-20】得物求購在哪裡看【2024-03-20】得物vip怎麼開【2024-03-20】得物怎麼申請退換貨

夏天雨後,常常能見到美麗又神奇的特殊天氣景象-彩虹。這也是攝影中可遇而不可求的難得景象,非常出片。彩虹出現有這樣幾個條件:一是空氣中有充足的水滴,二是太陽以較低的角度照射。所以下午雨過天晴後的一段時間內,是最容易看到彩虹的時候。不過彩虹的形成受天氣、光線等條件的影響較大,因此一般只會持續一小段時間,而最佳觀賞、拍攝時間更為短暫。那麼遇到彩虹,怎樣才能合理地記錄下來並拍出質感呢? 1.尋找彩虹除了上面提到的條件外,彩虹通常出現在陽光照射的方向,即如果太陽由西向東照射,彩虹更有可能出現在東

在購買顯示器的時候對其進行測試是必不可少的一環,能夠避免買到有損壞的,今天小編教大家來使用軟體對顯示器進行測試。方法步驟1.首先要在本站搜尋下載DisplayX這款軟體,安裝打開,會看到提供給用戶很多種檢測方法。 2.使用者點擊常規完全測試,首先是測試顯示器的亮度,使用者調整顯示器使得方框都能看得清楚。 3.之後點選滑鼠即可進入下一節,如果顯示器能夠分辨每個黑色白色區域那表示顯示器還是不錯的。 4.再次按一下滑鼠左鍵,會看到顯示器的灰階測試,顏色過渡越平滑表示顯示器越好。 5.另外在displayx軟體中我們

PhotoshopCS是PhotoshopCreativeSuite的縮寫,由Adobe公司出品的軟體,被廣泛用於平面設計和圖像處理,作為新手學習PS,今天就讓小編為您解答一下photoshopcs5是什麼軟體以及photoshopcs5使用教程。一、photoshopcs5是什麼軟體AdobePhotoshopCS5Extended是電影、視訊和多媒體領域的專業人士,使用3D和動畫的圖形和Web設計人員,以及工程和科學領域的專業人士的理想選擇。呈現3D影像並將它合併到2D複合影像中。輕鬆編輯視

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼

隨著智慧型手機的不斷發展,手機的功能也變得越來越強大,其中截長圖功能成為了許多用戶日常使用的重要功能之一。截長圖可以幫助使用者將較長的網頁、對話記錄或圖片一次儲存下來,方便查閱和分享。而在眾多手機品牌中,華為手機也是備受用戶推崇的一款品牌之一,其截長圖功能也備受好評。本文將為大家介紹華為手機截長圖的正確方法,以及一些專家技巧,幫助大家更好地利用華為手機的

使用電腦輸入英文時,有時候我們會遇到全角英文字母和半角英文字母的差異。全角英文字母是指在輸入法為中文模式下,按下Shift鍵和英文字母鍵組合輸入的字符,它們佔據一個全角字符寬度。而半角英文字母則是指在輸入法為英文模式下直接輸入的字符,它們佔據半個字符寬度。在某些情況下,我們可能需要將全角英文字母轉換為半角字母,以下是一個簡單的教學:首先,打開文字編輯器或任
