理解session

用途數據庫

  1. Session能夠記錄用戶的登陸與行爲數據,即記錄下用戶目前訪問服務器上的那些內容,狀態是什麼,而考慮到這些數據用戶修改的隨意性很大,並無必要直接存儲在數據庫中。
  2. 在用戶執行刷新操做時,即再次訪問服務器時,能夠直接根據Session,打開用戶上次訪問時網頁的狀態(如用戶輸入的表單內容等等),爲用戶帶來更優的體驗,提供個性化服務。
  3. 用戶的session信息很是關鍵,它記錄了用戶在進入頁面、查看結果、點擊結果以及後繼的操做(好比翻頁、加購物車等)。只有經過session信息才能把用戶的行爲聯繫起來,構建出完整的模型,所以從海量數據中把每個用戶全部session的操做都完整地挖掘出來很是重要。
Session其實就是會話變量的保存地,只要是能使用變量的地方,都能使用 Sesion 變量。好比能夠用來 計數、存儲臨時信息、甚至還能夠存儲DataTable,只要你的服務器的內存足夠大就行。 簡單通俗的講session就是象一個臨時的容器 來存放這些臨時的東西 從你登錄開始就保存在session裏 固然你能夠本身設置它的有效時間和頁面 舉個簡單的例子 咱們作一個購書的JSP網站 顧客買書的時候會挑選出一些書 可是在付錢以前還能夠修改,因此不能存到數據庫 就能夠先保存在session裏 等到確認了之後再放入數據庫...

定義瀏覽器

在WEB開發中,服務器能夠爲每一個用戶瀏覽器建立一個會話對象(session對象),注意:一個瀏覽器獨佔一個session對象(默認狀況下)。所以,在須要保存用戶數據時,服務器程序能夠把用戶數據寫到用戶瀏覽器獨佔的session中,當用戶使用瀏覽器訪問其它程序時,其它程序能夠從用戶的session中取出該用戶的數據,爲用戶服務。 須要注意:新開的瀏覽器窗口會生成新的Session,但子窗口除外。子窗口會共用父窗口的Session。例如,在連接上右擊,在彈出的快捷菜單中選擇"在新窗口中打開"時,子窗口即可以訪問父窗口的Session。 須要注意:只有訪問JSP、Servlet等程序時纔會建立Session,只訪問HTML、IMAGE等靜態資源並不會建立Session

這裏主要討論cookie和session有什麼區別?

Session和cookie的區別與聯繫

具體來講cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在服務器端保持狀態的方案。二者存儲的都是用戶登陸信息,操做行爲等等的數據。
  • cookie是把用戶的數據寫在用戶本地瀏覽器上, 其餘網站也能夠掃描使用你的cookie,容易泄露本身網站用戶的隱私,並且通常瀏覽器對單個網站站點有cookie數量與大小的限制。
  • Session是把用戶的數據寫在用戶的獨佔session上,存儲在服務器上,通常只將session的id存儲在cookie中。但將數據存儲在服務器對服務器的成本會高。
  • session是由服務器建立的,開發人員能夠在服務器上經過request對象的getsession方法獲得session
  • 通常狀況,登陸信息等重要信息存儲在session中,其餘信息存儲在cookie中

session的實現原理

服務器會爲每個訪問服務器的用戶建立一個session對象,而且把session對象的id保存在本地cookie上,只要用戶再次訪問服務器時,帶着session的id,服務器就會匹配用戶在服務器上的session,根據session中的數據,還原用戶上次的瀏覽狀態或提供其餘人性化服務。服務器

瀏覽器禁用cookie後如何實現session

若是客戶端瀏覽器將Cookie功能禁用,或者不支持Cookie怎麼辦?例如,絕大多數的手機瀏覽器都不支持Cookie。Java Web提供了另外一種解決方案:URL地址重寫。cookie

URL地址重寫session

URL重寫就是首先得到一個進入的URL請求而後把它從新寫成網站能夠處理的另外一個URL的過程。舉個例子來講,若是經過瀏覽器進來的URL是「UserProfile.aspx?ID=1」那麼它能夠被重寫成 「UserProfile/1.aspx」,這樣的URL,這樣的網址能夠更好的被網站所閱讀。網站

如何經過URL地址重寫實現session的id傳輸url

URL地址重寫的原理是將該用戶Session的id信息重寫到URL地址中。服務器可以解析重寫後的URL獲取Session的id。這樣即便客戶端不支持Cookie,也可使用Session來記錄用戶狀態。code

HttpServletResponse類提供了encodeURL(String url)實現URL地址重寫,該方法會自動判斷客戶端是否支持Cookie。若是客戶端支持Cookie,會將URL原封不動地輸出來。若是客戶端不支持Cookie,則會將用戶Session的id重寫到URL中。對象

session和cookie的有效時長

  • session的有效時長

服務器會把長時間沒有活動的Session從服務器內存中清除,此時Session便失效。具體根據服務器設置,通常在二三十分鐘左右。內存

  • cookie的有效時長

cookie的內容主要包括:名字,值,過時時間,路徑和域。路徑與域一塊兒構成cookie的做用範圍。

經過過時時間能夠設置cookie的有效時長

相關文章
相關標籤/搜索