搜尋
首頁Javajava教程jsp/servlet會話是什麼

jsp/servlet會話是什麼

May 15, 2019 pm 02:44 PM
javajsp

客戶端開啟與伺服器的連接,發出請求直到伺服器回應客戶端請求的整個過程稱之為會話 。 

推薦課程:Java教學

jsp/servlet會話是什麼

瀏覽器與伺服器之間的通訊是透過HTTP協定進行通訊的,而HTTP協定是」無狀態」的協議,它不能保存客戶的訊息,即一次回應完成之後連接就斷開了,下一次的請求需要重新連接,當用戶在同一網站的多個頁面之間轉換時,根本無法確定是否是同一個客戶,會話追蹤技術就可以實現這種要求。 

Cookie

伺服器在回應請求時可以將一些資料以"鍵-值"對的形式透過回應訊息保存在用戶端。當瀏覽器再次存取相同的應用程式時,會將原先的存有session ID的Cookie透過請求資訊帶到伺服器端,網頁伺服器透過識別唯一的session ID來代表每個客戶端,從而識別這個客戶端接下來的請求。

 Cookie不是內建對象,需要自行建立Cookie的實例。是伺服器往客戶端寫的一段文字訊息,該訊息是可以修改的,所以一般情況cookie會儲存一些非敏感訊息,當客戶端再次要求伺服器的時候,會將Cookie以請求頭的方式傳送到伺服器,這時候伺服器就能區分是誰在訪問了。

用於會話追蹤的Cookie叫做會話Cookie。 Servlet規格中會話追蹤的cookie名字必須是JSESSIONID,保存在瀏覽器的記憶體中。

Cookie可以用來維持使用者的會話狀態,但Cookie資訊保存在客戶端,有較大的安全隱患,且一般瀏覽器對Cookie的數目及資料大小有嚴格的限制。在Web應用程式中,一般情況下透過HttpSession物件保持會話狀態

Cookie cookie = new Cookie("键", "值");       //创建cookie
cookie.setMaxAge(60*60*24);                 //设置cookie的有效期
cookie.setPath("/");                        //设置cookie的有效范围(路径)
response.addCookie(cookie);                 //将cookie写入到客户端

Session

Session 是存放在伺服器端的,更安全。每個使用者都有一個不同的session,各個使用者之間是不能共享的。 

Session是依賴Cookie的,如果Cookie被停用,那麼session也會失效 。

Session技術則是服務端的解決方案,它是透過伺服器來保持狀態的。在Java中是透過呼叫HttpServletRequest的getSession方法(使用true作為參數)來建立的。在創建了Session的同時,伺服器會為該Session產生唯一的Session id,而這個Session id在隨後的請求中會被用來重新獲得已經創建的Session;在Session被創建之後,就可以調用Session相關的方法在Session中增加內容了,而這些內容只會保存在伺服器中,發到客戶端的只有Session id;當客戶端再次發送請求的時候,會將這個Session id帶上,伺服器接受到請求之後就會依據Session id找到對應的Session,從而再次使用。正式這樣一個過程,用戶的狀態也就得以維持了。

session.setAttribute(String name,Object obj);       //往session中存放内容(通过键和值的形式)
session.getAtrribute(String name);                  //通过键从session中获取内容
session.removeAttribute(String name);               //把存储在session中的对象移除
session.invalidate();                               //销毁session

隱藏表單域

隱藏表單域是將會話ID加入到HTML的隱藏表單中(類型為hidden的input)。重定向和轉發

透過進行訊息的傳遞 。透過表單形式提交到伺服器,但是本身不顯示。

例如第二個表單中取得第一個表單中的內容,並以隱藏域( 文字方塊type為hidden) 的方式接受第一個表單中的內容,再次傳遞到第三個表單中。通俗點說請求的順序是這樣的:表單- - > 表單二- - >表單三,但是表單三需要用到表單一提交的內容,所以就會需要表單二作為過渡,把錶單一的內容以隱藏域的形式儲存,然後再傳遞到表單三。

重寫URL

把會話ID編碼在網址中。例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980這樣,即使瀏覽器不支援cookie,也能夠實現會話追蹤。

對於URL複寫,伺服器從請求的URI中提取出會話ID,並把該請求與對應的會話關聯起來,然後在存取會話資料的時候,JSP頁面所進行的處理方式就和使用cookie追蹤會話id時所使用的方式完全相同。所以sesssion的實現要依賴cookie或URL複寫技術。

String sessionId = request.getRequestedSessionId();     //获得sessionId

透過response物件的encodeURL(StringURL)實作URL地值重寫:

<a>"> 
    index页面</a>

此方法會自動判斷客戶端是否支援Cookie。如果客戶端支援Cookie,會將URL原封不動地輸出來。如果客戶端不支援Cookie,則會呼叫encodeURL()方法之後會自動將使用者Session的id重寫到URL中。重寫後的輸出可能是這樣的:

a href="index.jsp?jsessionid=0E0C61100AEB06DE6A95EB1CD1DA8158">index页面

HttpServletResponse介面定義了兩個用於URL重寫的方法: 

encodeURL方法,用於超鏈接和form表單的action屬性中設定的URL進行重寫 

encodeRedirectURL 方法用於對傳遞給HttpServletResponse.sendRedirect()方法的URL進行重寫 

#

他們根據請求訊息中是否含有Cookie頭欄位來決定是否進行url重寫。把URL當作參數傳遞給這兩個方法,他們就能完成url重寫,在url後面加上 jsessionid參數及其值。可以關閉瀏覽器的Cookie,然後,進行實驗,在網頁原始檔中查看URL後面是否有jsessionid參數及其值。

以上是jsp/servlet會話是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通過字節碼解釋、平台無關的API和動態類加載實現Java的WORA特性:1.字節碼被解釋為機器碼,確保跨平台運行;2.標準API抽像操作系統差異;3.類在運行時動態加載,保證一致性。

Java的較新版本如何解決平台特定問題?Java的較新版本如何解決平台特定問題?May 02, 2025 am 12:18 AM

Java的最新版本通過JVM優化、標準庫改進和第三方庫支持有效解決平台特定問題。 1)JVM優化,如Java11的ZGC提升了垃圾回收性能。 2)標準庫改進,如Java9的模塊系統減少平台相關問題。 3)第三方庫提供平台優化版本,如OpenCV。

說明JVM執行的字節碼驗證的過程。說明JVM執行的字節碼驗證的過程。May 02, 2025 am 12:18 AM

JVM的字節碼驗證過程包括四個關鍵步驟:1)檢查類文件格式是否符合規範,2)驗證字節碼指令的有效性和正確性,3)進行數據流分析確保類型安全,4)平衡驗證的徹底性與性能。通過這些步驟,JVM確保只有安全、正確的字節碼被執行,從而保護程序的完整性和安全性。

平台獨立性如何簡化Java應用程序的部署?平台獨立性如何簡化Java應用程序的部署?May 02, 2025 am 12:15 AM

Java'splatFormIndepentEncealLowsApplicationStorunonAnyOperatingsystemwithajvm.1)singleCodeBase:writeandeandcompileonceforallplatforms.2)easileupdates:updatebybytecodeforsimultanane deployment.3)testOnOneOnePlatForforurouniverSalpeforuluniverSalpehavior formafforulululyiversalivernave.444.44.444

Java的平台獨立性如何隨著時間的流逝而發展?Java的平台獨立性如何隨著時間的流逝而發展?May 02, 2025 am 12:12 AM

Java的平台獨立性通過JVM、JIT編譯、標準化、泛型、lambda表達式和ProjectPanama等技術不斷增強。自1990年代以來,Java從基本的JVM演進到高性能的現代JVM,確保了代碼在不同平台的一致性和高效性。

在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。