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
相关文章
相关标签/搜索