web项目里的会话管理

本文介绍了Web项目中的会话管理,包括查询字符串、表单隐藏域和Session的使用,强调Session在服务器端存储及对同一浏览器窗口的有效性。同时,探讨了Cookie的工作原理,如将信息存储在客户端,其限制如存储字符串、数量限制和安全性问题。

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

  • 用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话。

会话跟踪技术分类

  • 查询字符串
  • 表单隐藏域

在form表单中添加对应隐藏域:

<input type=“hidden” name=“method” value=“Login”>

在请求中获取值

String method = request.getParameter(“method”);
  • Session

得到与当前请求相关联的Session:request.getSession(无参/true/false)

request.getSession(无参/true)

该方法先查看有没有与当前请求相关联的会话对象,如果有,直接返回该会话对象,如果没有,该方法将会新创建一个会话对象并返回:

request.getSession(false)

没有与请求相关联的会话,则该方法不会创建新的会话,直接返回null
session常用api

得到session的唯一标识ID号:session.getId()

得到session的创建时间:session.getCreationTime()

上次访问时间:session.getLastAccessedTime()

得到最大活动时间(生存时间):session.getMaxInactiveInterval()

设置最大活动时间(生存时间):session.setMaxInactiveInterval(int秒)

session销毁

web.xml中配置session超时(tomcat的全局web.xml、项目级别的web.xml)
<session-config>
    <session-timeout>(分钟数)</session-timeout>
</session-config>
session.setMaxInactiveInterval(30*60)//在代码中设置超时
session.invalidate();  让session内容全部清除

Session总结

  1. 所有session存在服务器端,耗服务器资源
  2. Session中的数据是对同一个浏览器窗口有效,如果客户端重新打开一个窗口访问WEB程序,则在第一个窗口中的Session中共享的数据在第二个窗口中取不到
  3. sessionID是通过Cookie传递的,如果客户端禁止了Cookie则无法传递sessionID
  • Cookie
    1.Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问 Cookie 信息 。
  1. 目前有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除 。
  2. 原理:将一个文本文件写入客户端的硬盘中,将要记住的内容以键值对的形式写在文本文件中 。

Cookie总结

  1. 只能往Cookie中写字符串,不能放对象
  2. 放在客户端不安全
  3. 一个WEB程序只支持200多个Cookie
  4. 客户端可以禁止Cookie
  • URL重写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值