会话
容器几乎会做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"));