JavaWeb Item11: Session會話管理

1、Session簡單介紹

  在WEB開發中,服務器能夠爲每一個用戶瀏覽器建立一個會話對象(session對象),注意:一個瀏覽器獨佔一個session對象(默認狀況下)。所以,在須要保存用戶數據時,服務器程序能夠把用戶數據寫到用戶瀏覽器獨佔的session中,當用戶使用瀏覽器訪問其它程序時,其它程序能夠從用戶的session中取出該用戶的數據,爲用戶服務。java

2、Session和Cookie的主要區別

  • Cookie是把用戶的數據寫給用戶的瀏覽器。web

  • Session技術把用戶的數據寫到用戶獨佔的session中。瀏覽器

  • Session對象由服務器建立,開發人員能夠調用request對象的getSession方法獲得session對象。服務器

3、session實現原理

3.一、服務器是如何實現一個session爲一個用戶瀏覽器服務的?

  服務器建立session出來後,會把session的id號,以cookie的形式回寫給客戶機,這樣,只要客戶機的瀏覽器不關,再去訪問服務器時,都會帶着session的id號去,服務器發現客戶機瀏覽器帶session id過來了,就會使用內存中與之對應的session爲之服務。cookie

    第一次訪問時,服務器會建立一個新的session,而且把session的Id以cookie的形式發送給客戶端瀏覽器。session

4、瀏覽器禁用Cookie後的session處理

解決方案:URL重寫
jsp

  • response.encodeRedirectURL(java.lang.String url) 用於對sendRedirect方法後的url地址進行重寫。 url

  • response.encodeURL(java.lang.String url)用於對錶單action和超連接的url地址進行重寫spa

eg:code

<!--修改前:-->
<a href=「maillogin.jsp「> 
<!--修改後:--> 
<a href=「<%=response.encodeURL(「maillogin.jsp「)%>「>

5、session對象的建立和銷燬時機

建立:利用session.isNew()判斷session是否是新建立的。

手動銷燬:利用session.invalidate()

session對象默認30分鐘沒有使用,則服務器會自動銷燬session,在web.xml文件中能夠手工配置session的失效時間。

<!-- 設置Session的有效時間:以分鐘爲單位-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
相關文章
相關標籤/搜索