JavaWeb值Session02

王振國老師整理

 

 

Session

什麼是 Session 會話?

  • Session 就一個接口(HttpSession)
  • Session 就是會話。它是用來維護一個客戶端和服務器之間關聯的一種技術
  • 每個客戶端都有自己的一個 Session 會話
  • Session 會話中,我們經常用來保存用戶登錄之後的信息。

如何創建 Session 和獲取(id 號,是否爲新)

如何創建和獲取 Session。它們的 API 是一樣的。

request.getSession()

  • 第一次調用是:創建 Session 會話
  • 之後調用都是:獲取前面創建好的 Session 會話對象。

isNew(); 判斷到底是不是剛創建出來的(新的)

  • true 表示剛創建
  • false 表示獲取之前創建

每個會話都有一個身份證號。也就是 ID 值。而且這個 ID 是唯一的。

getId() 得到 Session 的會話 id 值。

Session 域數據的存取

/**
* 往 Session 中保存數據
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
    req.getSession().setAttribute("key1", "value1");
    resp.getWriter().write("已經往 Session 中保存了數據");
}
/**
* 獲取 Session 域中的數據
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
    Object attribute = req.getSession().getAttribute("key1");
    resp.getWriter().write("從 Session 中獲取出 key1 的數據是:" + attribute);
}

Session 生命週期控制

public void setMaxInactiveInterval(int interval) 設置 Session 的超時時間(以秒爲單位),超過指定的時長,Session 就會被銷燬。

  • 值爲正數的時候,設定 Session 的超時時長。
  • 負數表示永不超時(極少使用)

public int getMaxInactiveInterval()獲取 Session 的超時時間

public void invalidate() 讓當前 Session 會話馬上超時無效。

Session 默認的超時時長是多少?

Session 默認的超時時間長爲 30 分鐘。

因爲在 Tomcat 服務器的配置文件 web.xml中默認有以下的配置,它就表示配置了當前 Tomcat 服務器下所有的 Session 超時配置默認時長爲:30 分鐘。

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

如果說。你希望你的 web 工程,默認的 Session 的超時時長爲其他時長。你可以在你自己的 web.xml 配置文件中做 以上相同的配置。就可以修改你的 web 工程所有 Seession 的默認超時時長。

<!--表示當前 web 工程。創建出來 的所有 Session 默認是 20 分鐘 超時時長-->
<session-config>
    <session-timeout>20</session-timeout>
</session-config>

如果你想只修改個別 Session 的超時時長。就可以使用上面的 API。setMaxInactiveInterval(int interval)來進行單獨的設 置。

  • session.setMaxInactiveInterval(int interval)單獨設置超時時長。

Session 超時的概念介紹:

瀏覽器和 Session 之間關聯的技術內幕

Session 技術,底層其實是基於 Cookie 技術來實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章