会话
容器几乎会做cookie的所有工作,如
在响应中发送一个会话cookie(从请求中得到会话ID)
HttpSession session = request.getSession();
在服务器中请求一个会话,余下的事情会自动完成
- 建立新的HttpSession对象
- 生成唯一的会话ID
- 建立新的Cookie对象
- 把会话ID与cookie关联
- 在响应中设置Cookie(在Set-Cookie首部下)
Session.isNew()
用户还没用这个会话ID做过响应isNew就返回true
如果没有启用cookie,客户不会加入会话,isNew()方法总是会返回true
response.sendRedirect(response.encodeURL(url));
如果只想要一个已经有的会话
HttpSession session =request.getSession(false); //如果没有与此客户关联的会话,返回null
If(session == null){
// do something
}
关键的HttpSession方法
- getCreationTime():返回第一次创建会话的时间
- getLastAccessedTime():返回容器最后一次得到包含这个会话ID的请求后过了多长时间(毫秒)
- setMaxInactiveInterval():指定对于这个会话客户请求的最大间隔时间(秒)
- getMaxInactiveInterval():返回对于这个会话客户请求的最大间隔时间(秒)
- invalidate():结束会话。当前存储在这个会话中的所有属性也会接触绑定
会话的三种死法
- 超时
- 在会话对象上调用invalidate()
- 在部署描述文件中配置会话超时
<session-config>
<session-timeout>15</session-timeout> <!-- 15分钟 -->
</session-config>
设置特定会话的会话超时
Session.setMaxInactiveInterval(15*60); //15分钟
Cookie在浏览器关闭后仍能存活
Cookie cookie = new Cookie(“username”,name);
Cookie.setMaxAge(30*60); //单位秒,设置在客户端存活多久
Response.addCookie(cookie) //将cookie发送到客户
URL重写
jsp中
Cookie cookie = new Cookie(“username”,name);
Cookie.setMaxAge(30*60); //单位秒,设置在客户端存活多久
Response.addCookie(cookie) //将cookie发送到客户
servlet中
Stringpath = request.getContextPath();
response.sendRedirect(response.encodeURL(path+"/MyJsp.jsp"));