06. 会话管理

来源:互联网 发布:服务器如何开放端口 编辑:程序博客网 时间:2024/06/07 23:52
要点


在写至响应的HTML中,URL重写把会话ID增加到其中所有URL的最后。

会话ID作为请求URL最后的“额外”信息再通过请求返回

如果客户不接受cookie,URL重写会自动发生,但是必须显式地对所有URL编码。

要对一个URL编码,需要调用response. encodeURL(String)。

out.println("<a href='" + response.encodeURL("/BeerTest.do") + "'>click  me</a >") ;

没有办法对静态页面完成自动的URL 重写,所以,如果你依赖于会话,就必须使用动态生成的页面。

重定向   response.encodeRedirectURL("res.jsp");




设置会话超时
好消息: 你不用自己来跟踪。看到上-- 页的那些方法了吗? 无需你使用这些方法来删除无用的(不活动的) 会话。这些事情容器会为你做的。
  会话有3种死法:
1、超时。
2、你在会话对象上调用invalidate( )。
3、应用丝束(崩溃或取消部署)


(1)在DD中配置会话超时
在DD中配置会话超时与在所创建的每一个会话上调HsetMaxInactiveInterval()有同样的效果。
<session-config>
  <session-timeout>15</session-timeout>
</session-config>
15分钟过期






(2)设置一个特定会话的会话超时

如果你想改变某个特定会话实例的session-timeout值(而不影响应用中其他会话的超时时间) : session.setMaxInactiveInterval(20 * 60);

不要把Cookie和首部混为一谈


向响应增加一个首部时,要把名和值String作为参数传入: response.addHeader("foo","bar");
但是向响应增加一个Cookie时,要传递一个Cookie对象。需要在Cookie构造函数中设置Cookie名和值。
Cookie cookie = newCookie("name",name);

response.addCookie(cookie);


还要记住,对于首部既有setHeader()方法,又有addHeader()方祛(如果已经有这个首部,addHeader会向这个现有的首部增加一个值,而setHeader会替换现有的值)。但是不存在setCookie()方法。只有一个addCookie()方祛!

原创粉丝点击