JavaWeb——HttpSession

Session機制:

  • session機制採用的是在服務器端保持HTTP狀態信息的方案
  • 若是須要建立session時,首先去在這個請求搜索session,若是有,不會去建立session,若是沒有會去建立一個session

保存session id的幾種方式:web

  • 保存session id的方式能夠採用cookie
  • 因爲cookie可能被人爲的禁用,爲了在cookie被禁用時依然可以把session id傳遞迴服務器,常常採用的一種技術叫作URL重寫,就是把session id附加在      URL路徑的後面(有兩種附加方式1.URL路徑的附加信息,2.查詢字符串附加在URL後面

 

Session Cookie:瀏覽器

  session用過SessionID來區分不一樣的用戶,session是以cookie或URL重寫爲基礎的,默認使用cookie來實現,系統會創造一個名爲JSESSIONID的輸出cookie,這稱之爲session cookie,以區別pesistent cookies(cookie),session cookie是存儲於瀏覽器內存中的,並非寫到硬盤上。服務器

 

HttpSession的生命週期:

1.何時建立HttpSession對象cookie

  ①是否瀏覽器訪問服務端的任何一個JSP,服務器都會當即建立一個HttpSession對象呢?不必定。session

  1.對於JSP:spa

    1)若當前的JSP是客戶端訪問的當前WEB應用的第一個資源,且JSP的page指定的session屬性值爲false,則服務器就不會爲JSP建立一個HttpSession對象。xml

    2)若當前JSP不是客戶端訪問的當前WEB應用的第一個資源,且其餘頁面已經建立一個HttpSession對象,而不會建立一個新的HttpSession對象對象

  2.對於Servlet:若Servlet是客戶端訪問的第一個WEB應用的資源,則只調用了request.getSession()或request.getSession(true)纔會建立HttpSession對象
生命週期

 

    ②page指令的session="false" 究竟是什麼意思?內存

    > 當前JSP頁面禁用session隱含變量,但可使用其餘的顯式的HttpSession對象

 

  (3)在sevlet中如何獲取HttpSession對象?

    > request.getSession(boolean create):

    create爲false,若沒有和當前JSP頁面關聯的HttpSession對象,則返回null;如有,則返回true

    create爲true,必定返回一個HttpSession對象。若沒有和當前JSP頁面關聯的HttpSession對象,則服務器建立一個新的HttpSession對象返回,如有,直接返回關聯的。

         request.getSession()等同於request.getSession(true)

 

2.何時銷燬HttpSession對象

(1).直接調用HttpSession的invalidate()方法:該方法使HttpSession失效

(2).服務器卸載了當前WEB應用。

(3).超過HttpSession的過時時間

session.getMaxInactiveInterval();獲取過時時間默認1800s

    》設置HttpSession的過時時間:session.setMaxInactiveInerval(5);單位爲秒

    》在web.xml文件中設置HttpSession的過時時間:單位爲分鐘

    <session-config>

      <session-timeout>30</session-timeout>

    </session-config>

(4).並非關閉瀏覽器就銷燬了session對象

相關文章
相關標籤/搜索