JavaWeb學習筆記11--Session

上一篇:JavaWeb學習筆記10–Cookie
下一篇:JavaWeb學習筆記12–JSP

Session學習

  1. Session概念:服務器端會話技術,在一次會話的多次請求間共享數據,將數據保存在服務器端的對象中。
  2. Session快速入門:
1. 獲取HttpSession對象:
	HttpSession session = request.getSession();
2. 使用HttpSession對象:
	Object getAttribute(String name)  
	void setAttribute(String name, Object value)
	void removeAttribute(String name)  
    // 在Session中存、取、刪數據
protected void doGet(HttpServletRequest request,    HttpServletResponse response) throws ServletException,  IOException {
   	//獲取Sesseion對象
	HttpSession session=request.getSession();
	session.setAttribute("username", "zhangsan");//存儲數據
	session.getAttribute("username");//獲取數據
	session.removeAttribute("username");//刪除數據
}
  1. Session原理
* Session的實現是依賴於Cookie的。
* Session是服務器開闢的一個用來存儲數據的空間
* 服務器爲每個瀏覽器單獨開闢一個Session
* 服務器根據瀏覽器發送過來的Cookie,來確認當前瀏覽器使用哪個Session

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

  1. Session細節:
1. 當客戶端關閉後,服務器不關閉,兩次獲取session是否爲同一個?
	* 默認情況下。不是。
	* 如果需要相同,則可以創建Cookie,鍵爲JSESSIONID,設置最大存活時間,讓cookie持久化保存。
		 Cookie c = new Cookie("JSESSIONID",session.getId());
         c.setMaxAge(60*60);
         response.addCookie(c);

2. 客戶端不關閉,服務器關閉後,兩次獲取的session是同一個嗎?
	* 不是同一個,但是要確保數據不丟失。tomcat自動完成以下工作
		* session的鈍化:
			* 在服務器正常關閉之前,將session對象系列化到硬盤上
		* session的活化:
			* 在服務器啓動後,將session文件轉化爲內存中的session對象即可。
		
3. session什麼時候被銷燬?
	1. 服務器關閉
	2. session對象調用invalidate()3. session默認失效時間 30分鐘
		選擇性配置修改	
		<session-config>
	        <session-timeout>30</session-timeout>
	    </session-config>
  1. session的特點
 1. session用於存儲一次會話的多次請求的數據,存在服務器端
 2. session可以存儲任意類型,任意大小的數據

* session與Cookie的區別:
	1. session存儲數據在服務器端,Cookie在客戶端
	2. session沒有數據大小限制,Cookie有
	3. session數據安全,Cookie相對於不安全

上一篇:JavaWeb學習筆記10–Cookie
下一篇:JavaWeb學習筆記12–JSP

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