java中session對象及其經常使用方法

  1. session對象用於在會話範圍內,記錄每一個客戶端的訪問狀態,以便於跟蹤每一個客戶端的操做狀態,在會話存儲的信息,在瀏覽器發出後續請求時能夠獲取這些會話的有效數據。  
  2. 在jsp頁面中能夠直接使用session對象(jsp的內置對象),也能夠經過pageContext.getSession()或者request.getSession從新回去session對象。  
  3. session能夠保存用戶的信息和實現購物車等功能。  
  4. HTTP協議是一種無狀態協議,客戶向服務器發出的請求request,而後服務器返回響應response,鏈接就被關閉了,在服務器不保存鏈接的有關信息,所以在下一次鏈接時,服務器已經沒有之前的鏈接信息了,沒法判斷這一次鏈接和上一次鏈接時同一個客戶信息,所以,必須使用會話記錄有關鏈接的信息。  
  5. 從客戶打開瀏覽器鏈接到服務器,到客戶關閉瀏覽器離開這個服務器,稱作一個會話。當客戶訪問服務器是,可能會反覆鏈接這個服務器上的幾個頁面、反覆刷新一個頁面或不斷地向一個頁面提交信息等,服務器應當經過某種方法知道這是同一個客戶,這時就須要session對象。  
  6. session的工做原理以下:  
  7. 一、客戶首次訪問服務器的一個頁面時,服務器就會爲該用戶分配一個session對象,同時爲這個session指定惟一的ID,而且將該ID發送到客戶端並寫入到cookie中,使得客戶端與服務器的session創建一一對應的關係;  
  8. 二、當客戶端繼續訪問服務器端的其它資源時,服務器再也不爲該客戶分配新的session對象,直到客戶端瀏覽器關閉、超時或調用session的invalidate()方法使其失效,客戶端與服務器的會話結束。  
  9. 三、當客戶從新打開瀏覽器訪問網站時,服務器會從新爲客戶分配一個session對象,並從新分配sessionID。  
  10. session對象主要用於屬性操做和會話管理,經常使用方法以下:  
  11. 一、public void setAttribute(String name,String value)設定指定名字的屬性的值,並將它添加到session會話範圍內,若是這個屬性是會話範圍內存在,則更改該屬性的值。  
  12. 二、public Object getAttribute(String name)在會話範圍內獲取指定名字的屬性的值,返回值類型爲object,若是該屬性不存在,則返回null。  
  13. 三、public void removeAttribute(String name),刪除指定名字的session屬性,若該屬性不存在,則出現異常。  
  14. 四、public void invalidate(),使session失效。能夠當即使當前會話失效,原來會話中存儲的全部對象都不能再被訪問。  
  15. 五、public String getId( ),獲取當前的會話ID。每一個會話在服務器端都存在一個惟一的標示sessionID,session對象發送到瀏覽器的惟一數據就是sessionID,它通常存儲在cookie中。  
  16. 六、public void setMaxInactiveInterval(int interval) 設置會話的最大持續時間,單位是秒,負數代表會話永不失效。  
  17. 七、public int getMaxInActiveInterval(),獲取會話的最大持續時間。  
  18. 八、使用session對象的getCreationTime()和getLastAccessedTime()方法能夠獲取會話建立的時間和最後訪問的時間,但其返回值是毫秒,通常須要使用下面的轉換來獲取具體日期和時間。  
  19.      Date creationTime = new Date(session.getCreationTime());  
  20.     Date accessedTime = new Date(session.getLastAccessedTime());  
  21. <%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>  
  22. <%  
  23. String path = request.getContextPath();  
  24. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  25. %>  
  26. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  27. <html>  
  28.   <head>  
  29.     <base href="<%=basePath%>">  
  30.      
  31.     <title>session對象方法</title>  
  32.      
  33.  <meta http-equiv="pragma" content="no-cache">  
  34.  <meta http-equiv="cache-control" content="no-cache">  
  35.  <meta http-equiv="expires" content="0">     
  36.  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  37.  <meta http-equiv="description" content="This is my page">  
  38.  <!--  
  39.  <link rel="stylesheet" type="text/css" href="styles.css">  
  40.  -->  
  41.   </head>  
  42.    
  43.   <body>  
  44.     <b>  
  45.     會話ID:<%=session.getId() %> <br>  
  46.     是否新會話:<%=session.isNew() %><br>  
  47.     設置和獲取屬性對象:用戶名 =  
  48.     <%session.setAttribute("用戶名","bing"); %>  
  49.     <%=session.getAttribute("用戶名") %><br>  
  50.     <%  
  51.     Date creationTime = new Date(session.getCreationTime());  
  52.     Date accessedTime = new Date(session.getLastAccessedTime());  
  53.      %>  
  54.      會話建立時間:<%=creationTime %><br>  
  55.      上次訪問時間:<%=accessedTime %><br>  
  56.      會話持續時間(s):<%=session.getMaxInactiveInterval() %><br>  
  57.      <%session.setMaxInactiveInterval(12); %>  
  58.      修改後的會話持續時間(s):<%=session.getMaxInactiveInterval() %><br>  
  59.      <%session.invalidate(); %>  
  60.      </b>  
  61.   </body>  
  62. </html> 
  63. 獲取session   HttpServletRequest request  , HttpSession session = request.getSession ();
  64. session.invalidate ();//清空session
相關文章
相關標籤/搜索