Servlet学习笔记2,及回忆

来源:互联网 发布:淘宝等级最高的卖家 编辑:程序博客网 时间:2024/04/29 22:06

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()方法