您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關session基礎有哪些,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
之前講過cookie,但是cookie是保存在客戶端瀏覽器的,如果敏感信息使用cookie來保存會造成安全隱患,所以cookie在某些場景下是不適合的,此時可以使用session。
session技術也是用于保存用戶在請求中的一些重要信息,但是session技術與cookie的不同點在于session是針對用戶請求的,在服務端創建一個對象,然后把用戶的請求中重要的數據保存在服務端創建的這個對象中。(sesion是保存在服務端中)因此只有用戶不關閉瀏覽器,用戶通過當前的個瀏覽器訪問當面網站中任何一個頁面,服務器內部始終將使用當前這個session來記錄數據,所以可以將session當做一個容器,針對當前用戶(瀏覽器)來存放不同頁面上需要共享的數據。
在web項目中,服務器可以為每一個用戶瀏覽器創建一個會話對象(session對象),在默認情況下,一個瀏覽器是獨占一個session對象的,因此在需要保護用戶數據時,服務器程序可以把用戶數據卸載用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其他程序時,其他程序可以從用戶的session中取出該用戶的數據。
session是一個域對象,所謂的域可以理解為有邊界的容器,既然是容器那么就可以存放東西,這里就是存放數據,既然有邊界,就是這里的數據在某一個范圍內是有效果。下面比較一下web項目中的三個域對象:
ServletContext:代表的是整個項目,里面存儲的數據可以在當前項目的任何一個程序中使用
HttpServletRequest: 代表的是當前這個請求,在轉發的時候(因為轉發是同一個請求,但是重定向就不是)可以將當前請求中存儲的數據轉給下一個servlet或者jsp進行處理
HttpSession:代表的是用戶(瀏覽器)對當前服務器的一系列操作時的那個容器,可以在當前每一個用戶(瀏覽器)內部進行數據的共享操作。
登錄成功后將登陸的信息放到session中,然后在用戶操作其他的頁面后,都可以顯示用戶的信息。
可以通過HttpServletRequest對象來獲取session,有兩個方法可以獲取
request.getSession()
如果sesion不存在,則會創建
如果session已經存在,就會返回當前這個session對象
request.getSession(boolean)
如果session對象存在,則返回當面的sesion對象
session對象不存在,不會創建session,而是返回一個null
參數為true則和getSession()方法的效果是一樣的
參數為false
每一個用戶都可以有自己的session信息,那么服務器怎么識別每一個用戶的session對象呢?其實是因為服務器針對每一個用戶都發送了一個key為JSEESSIONID的cookie信息,用戶在操作的時候,都會攜帶這個cookie到服務器,這樣服務器才可以識別針對當前的這個JSESSIONID的那個session對象。
服務器在給客戶端響應數據的時候,把session對象的jsessionId作為cookie的key值發送給瀏覽器,這個cookie是會話級別的(臨時的),該cookie只可以存在于瀏覽器運行期間,如果瀏覽器關閉了,cookie的信息就沒有了,當再一次打開瀏覽器的時候,就不會再服務器獲取當前用戶的jsessionid信息,無法找到針對當前用戶的那個session容器,所以瀏覽器關閉后session不可用。
關于session基礎有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。