許多應用都須要一個客戶端的多個請求是相互關聯。例如,一個web程序能在多個請求間保存用戶的狀態。基於web的應用程序都有維護這些狀態的能力,由於HTTP是無狀態的。爲了支持這些,web應用程序須要維護狀態,servlet技術提供了管理session的api,而且有幾種實現會話的機制。java
session表明一個HttpSession對象。你能夠經過請求的getSession方法訪問session。這個方法返回關聯到當前請求的session對象,或者,若是當前請求尚未session,這個方法會生成一個。web
你能夠經過名稱關聯對象-值屬性到session。這些屬性能夠被同一個web上下文處理同一個session的請求訪問。
注意,你的應用程序能夠通知web上下文和servlet生命週期(Handling Servlet Lifecycle Events)中的session監聽器。 您還能夠通知與會話關聯的某些事件的對象,例如如下內容:api
由於HTTP客戶端沒有方法去標記是否再也不須要一個session。每個session都關聯了一個超時時間,以便於資源的回收利用。這個超時階段能夠經過session的getMaxInactiveInterval 和setMaxInactiveInterval方法訪問。服務器
要使用NetBeans集成開發環境在部署描述符中設置超時時間,請按照下列步驟操做。cookie
要將session與用戶關聯,web容器有幾種方法,它們都須要在客戶端與服務器直接傳一個惟一標識。這個惟一標識在客戶端做爲一個cookie維護,或者web組件在返回客戶端的每個響應中包含這個惟一標識。
若是你的應用使用了session對象, 您必須確保在客戶端關閉cookie時讓應用程序重寫URL,從而啓用會話跟蹤。你能夠經過調用全部servlet的響應的encodeURL方法來實現。只有當cookie無效時,這個方法纔在url中包含惟一標識;從另外一個角度講,這個方法返回的url不會改變。session