笔记——会话、cookie、url重写

本文详细介绍了HTTP会话管理机制,包括如何使用容器来管理会话,如何通过Cookie跟踪用户状态,以及如何处理会话超时等问题。此外还探讨了Cookie在浏览器中的持久性和URL重写等技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值