国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JavaWeb學習總結第六篇--認識Session機制

2019-11-15 00:39:04
字體:
來源:轉載
供稿:網友
javaWeb學習總結第六篇--認識session機制

認識Session機制

前文也提到過,常用的會話跟蹤有兩種技術:Cookie和Session。今天就為大家講解一下Session機制。

什么是Session?

Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上,這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查找該客戶的狀態就可以了。

實現用戶登錄

Session對應的類為javax.servlet.http.HttpSession類。每個來訪者對應一個Session對象,所有該客戶的狀態信息都保存在這個Session對象里。Session對象是在客戶端第一次請求服務器的時候創建的。Session也是一個key-value屬性對,通過getAttribute(String key)和setAttribute(String key,Object value)方法讀寫客戶狀態信息。

Session的生命周期

Session保存在服務器端,為了獲得更高的存取速度,服務器一般把Session保存在內存里。需要注意的是只有訪問jsp、Servlet等程序時才會創建Session,訪問HTML、IMAGE等靜態資源時并不會創建Session。Session生成后,只要用戶繼續訪問,服務器就會更新Session的最后訪問時間,并維護該Session。

由于會有越來越多的用戶訪問服務器,因此Session也會越來越多。為防止內存溢出,服務器會把長時間沒有活躍的用戶的Session從內存里刪除。這個時間就是Session的超時時間。如果超過了超時時間沒訪問服務器,Session就自動失效了。

Session的超時時間為maxInactiveInterval屬性,可以通過對應的getMaxInactiveInterval()獲取,通過setMaxInactiveInterval(long interval)修改。

Session的常用方法

URL地址重寫

雖然Session保存在服務器里,對客戶端是透明的,但是Session的正常運行也需要客戶端瀏覽器的支持。這是因為Session需要使用Cookie作為識別標志。HTTP協議是無狀態的,Session不能依據HTTP連接來判斷是否為同一用戶,因此服務器向客戶端瀏覽器發送一個名為JSESSIONID的Cookie,它的值為該Session的ID(也就是HttpSession.getId()的返回值)。Session依據該Cookie來識別是否為同一用戶。

如果客戶端瀏覽器將Cookie功能禁用,或者不支持Cookie怎么辦呢?比如很多手機就沒有支持Cookie的功能。Java Web提供了一種解決方案:URL地址重寫。

URL地址重寫的原理是將該用戶Session的id信息重寫到URL地址中。服務器能夠解析重寫后的URL獲取Session的id。這樣即使客戶端不支持Cookie,也可以使用Session來記錄用戶狀態。HttpServletResponse類提供了encodeURL(String url)實現URL地址重寫。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中卫市| 韶山市| 柯坪县| 会泽县| 天柱县| 东丰县| 杭锦后旗| 永泰县| 西安市| 衡阳市| 青田县| 清水河县| 合肥市| 射洪县| 武宁县| 孟连| 浪卡子县| 汝州市| 星子县| 镇巴县| 嘉黎县| 德令哈市| 哈密市| 成安县| 淮滨县| 六枝特区| 宁安市| 余姚市| 朝阳县| 额济纳旗| 夏河县| 咸宁市| 元氏县| 白沙| 莒南县| 延长县| 西丰县| 鹤山市| 云浮市| 济宁市| 青龙|