Servlet學習筆記2,及回憶

Session Management

利用javax.servlet.http.HttpServletRequest接口的getSession()方法可以取得HttpSession對象,沒有時會產生Session.Session是通過SessionId來辨別是否同一Session的。在getSession()若以前沒有Session,WEB容器會產生一個SessionID和Cookie對象,並把這個SessionID填充進Cookie對象,Cookie對象會被加入到HttpservletResponse的包頭當中。再有請求發生時,Cookie會隨請求包頭一起發到服務器,服務器以此來辨別是否同一Session.。

再利用HttpSession接口的某些方法來存取HttpSession對象的內容。

 

javax.servlet.http.HttpSession接口下的方法:

Object getAttribute(String name)    HttpSession會話狀態中取得某屬性。

Enumeration getAttributeNames()   HttpSession會話狀態中取出所有屬性名稱。

void setAttribute(String name , Object object)   HttpSession會話狀態中加入某對象爲屬性。

void removeAttribute(String name)   HttpSession會話狀態中移除某屬性。

void invalidate()  終止某個HttpSession會話狀態。

void setMaxInactiveInterval(int interval)   設定HttpSession會話狀態的超時時間,單位爲

long getCreationTime()  取得HttpSession會話狀態的建立時間。

ServletContext getServletContext()  取得ServletContext對象。

另外還有得到得到最大超時時間方法和最後一次訪問時間方法等。

HttpSession會話狀態等同於HttpSession對象

 

web.xml內設定HTTP會話階段的timeout時間,方法如下:

<session-config>

       <session-timeout>30</session-timeout>

</session-config>

以上設定timeout時間爲30分鐘

 

若客戶端Cookie關閉,此時需要通過URL改寫來維持HttpSession狀態。

HttpServletResponse接口的encodeURL(String url)方法。

URL改寫的場合如果需呼叫sendRedirect()方法,應改用HttpServletResponse接口的encodeRedirectURL(String url)方法。

 

終止HttpSession會話狀態的方法:

方法一:呼叫HttpSession接口的void invalidate()方法

方法二:在web.xml設定HTTP會話階段的timeout時間

如果要設定HttpSession會話狀態每20分鐘即終止會話(不論是否在使用或idle),必須透過getCreationTime()方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章