教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JAVA培訓之HttpSession入門

更新時間:2016年08月17日16時48分 來源:傳智播客JAVA培訓學院 瀏覽次數(shù):

.HttpSession概述

首先,HttpSession是javax.servlet.http包下的一個接口。從名字來看,我們可以知道HttpSession與Http協(xié)議有一定的關系,但是它并不是由Http協(xié)議定義的,而是由Javaweb提供。我們可以在JavaEE api中查看它的詳細信息。
其次,HttpSession是用來進行會話跟蹤的接口,我們之前也學過另外一個與會話相關的技術Cookie。在Cookie介紹中我們了解到,Cookie是由Http協(xié)議制定的,在請求信息和響應信息中分別對應了Cookie請求頭和Set-Cookie響應頭,并且Cookie是由服務器創(chuàng)建,保存在客戶端。而HttpSession對象也是由服務器創(chuàng)建,但是與Cookie不同的是,它保存在服務器端。
HttpSession對象是Servlet的三大域?qū)ο笾?,其他兩個域?qū)ο笫莚equest和application。application的類型是ServletContext。這三個域中,request的域范圍最小,它的域范圍是整個請求鏈,并且只在請求轉發(fā)和包含時存在;session域?qū)ο蟮挠蚍秶且淮螘?,而在一次會話中會產(chǎn)生多次請求,因此session的域范圍要比request大;application的域范圍是最大的,因為一個web應用只有唯一的一個application對象,只有當web應用被移出服務器或服務器關閉它才死亡,它的域范圍是整個應用。

2.HttpSession相關知識

在HttpSession概述中,我們提到它是用來進行會話跟蹤的接口。會話是一個用戶對服務器的多次連貫性的請求,所謂連貫性請求是指該用戶的在多次請求的過程中沒有關閉瀏覽器。而會話范圍就是指某個用戶從首次訪問服務器開始到該用戶關閉瀏覽器為止。
服務器會為每個用戶創(chuàng)建一個session對象,當用戶關閉瀏覽器,再次打開瀏覽器訪問服務器時,服務器會為該用戶創(chuàng)建一個新的session對象。當然,服務器不會只有一個用戶訪問,當多個用戶訪問服務器,服務器會為創(chuàng)建多個session對象,這些session對象都保存在一個Map中,而這個Map被稱之為session緩存。當服務器關閉,該緩存就會被清空。
session底層是依賴Cookie的,如果瀏覽器禁用Cookie則session會依賴URL重寫。詳情我們會在后面介紹。
如何獲取HttpSession對象?在服務器端,例如在Servlet中,我們通過request對象的getSession()方法獲取服務器為當前用戶創(chuàng)建的session對象,即:HttpSession session=request.getSession()。而在jsp中,session是jsp的內(nèi)置對象,不用獲取就可以直接使用。
我們知道每一個域?qū)ο蠖紩幸韵氯齻€方法,HttpSession也不例外:
  • void setAttribute(String name,Object value):向域中添加域?qū)傩裕?/li>
  • Object getAttribute(String name):從域中獲取指定名稱的屬性值;
  • Void removeAttribute(String name):移出域中指定名稱的域?qū)傩浴?/li>
 本文版權歸傳智播客Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://m.fskzgqt.cn/javaee
0 分享到:
和我們在線交談!