搜尋
首頁Javajava教程java中session物件及方法實例分析

session物件用於在會話範圍內,記錄每個客戶端的存取狀態,以便於追蹤每個客戶端的操作狀態,在會話儲存的信息,在瀏覽器發出後續請求時可以獲得這些會話的有效數據。

在jsp頁面中可以直接使用session物件(jsp的內建物件),也可以透過pageContext.getSession()或request.getSession重新回去session物件。

session可以保存使用者的資訊和實現購物車等功能。

HTTP協議是一種無狀態協議,客戶向伺服器發出的請求request,然後伺服器返回回應response,連接就被關閉了,在伺服器不保存連接的有關信息,因此在下一次連接時,伺服器已經沒有先前的連線資訊了,無法判斷這次連線和上一次連線時同一個客戶訊息,因此,必須使用會話記錄有關連線的資訊。

從客戶開啟瀏覽器連線到伺服器,到客戶關閉瀏覽器離開這個伺服器,稱做一個會話。當客戶訪問伺服器是,可能會重複連接這個伺服器上的幾個頁面、反覆刷新一個頁面或不斷地向一個頁面提交資訊等,伺服器應透過某種方法知道這是同一個客戶,這時就需要session對象。

session的工作原理如下:

1、客戶首次存取伺服器的一個頁面時,伺服器就會為該使用者指派一個session對象,同時為這個session指定唯一的ID,並且將該ID傳送到客戶端並寫入到cookie中,使得客戶端與伺服器的session建立一一對應的關係;

2、當客戶端繼續存取伺服器端的其它資源時,伺服器不再為該客戶指派新的session對象,直到客戶端瀏覽器關閉、逾時或呼叫session的invalidate()方法使其失效,客戶端與伺服器的會話結束。

3、當客戶重新開啟瀏覽器造訪網站時,伺服器會重新為客戶指派一個session對象,並重新指派sessionID。

session物件主要用於屬性運算和會話管理,常用方法如下:

1、public void setAttribute(String name,String value)設定指定名字的屬性的值,並將它加到session會話範圍內,如果這個屬性是會話範圍內存在,則會變更該屬性的值。

2、public Object getAttribute(String name)在會話範圍內取得指定名字的屬性的值,傳回值類型為object,如果該屬性不存在,則傳回null。

3、public void removeAttribute(String name),刪除指定名字的session屬性,若該屬性不存在,則出現異常。

4、public void invalidate(),使session失效。可以立即使目前會話失效,原來會話中儲存的所有物件都不能再被存取。

5、public String getId( ),取得目前的會話ID。每個會話在伺服器端都存在一個唯一的標示sessionID,session物件傳送到瀏覽器的唯一資料就是sessionID,它一般儲存在cookie中。

6、public void setMaxInactiveInterval(int interval) 設定會話的最大持續時間,單位是秒,負數表示會話永不失效。

7、public int getMaxInActiveInterval(),取得會話的最大持續時間。

8、使用session物件的getCreationTime()和getLastAccessedTime()方法可以取得會話建立的時間和最後存取的時間,但其傳回值是毫秒,一般需要使用下面的轉換來取得特定日期和時間。

Date creationTime = new Date(session.getCreationTime());
Date accessedTime = new Date(session.getLastAccessedTime());

nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  
    <base>" rel="external nofollow" >   
    <title>session对象方法</title>
   
 <meta>
 <meta>
 <meta>   
 <meta>
 <meta>
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
 -->
  
 
  
    <b>
    会话ID: <br>
    是否新会话:<br>
    设置和获取属性对象:用户名 =
    
    <br>
    
     会话创建时间:<br>
     上次访问时间:<br>
     会话持续时间(s):<br>
     
     修改后的会话持续时间(s):<br>
     
     </b>
  

取得session常用的幾種方法

1.spring mvc中

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

2. struts2中

(1)

ActionContext context = ActionContext.getContext(); 
Map request = (Map) context.get("request"); 
Map session = context.getSession(); 
Map application = context.getApplication();

(2)

ActionContext actionContext = ActionContext.getContext(); 
HttpServletRequest request = (HttpServletRequest) actionContext
.get(ServletActionContext.HTTP_REQUEST); 
HttpSession session = request.getSession(); 
ServletContext context = (ServletContext) actionContext 
 .get(ServletActionContext.SERVLET_CONTEXT);

3.透過ServletActionContext取得

HttpServletRequest request = ServletActionContext.getRequest(); 
HttpSession session = request.getSession();

以上是java中session物件及方法實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
带你搞懂Java结构化数据处理开源库SPL带你搞懂Java结构化数据处理开源库SPLMay 24, 2022 pm 01:34 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

Java集合框架之PriorityQueue优先级队列Java集合框架之PriorityQueue优先级队列Jun 09, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

完全掌握Java锁(图文解析)完全掌握Java锁(图文解析)Jun 14, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

一起聊聊Java多线程之线程安全问题一起聊聊Java多线程之线程安全问题Apr 21, 2022 pm 06:17 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

Java基础归纳之枚举Java基础归纳之枚举May 26, 2022 am 11:50 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

详细解析Java的this和super关键字详细解析Java的this和super关键字Apr 30, 2022 am 09:00 AM

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

Java数据结构之AVL树详解Java数据结构之AVL树详解Jun 01, 2022 am 11:39 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

一文掌握Java8新特性Stream流的概念和使用一文掌握Java8新特性Stream流的概念和使用Jun 23, 2022 pm 12:03 PM

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中