- 用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话。
会话跟踪技术分类
- 查询字符串
- 表单隐藏域
在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总结
- 所有session存在服务器端,耗服务器资源
- Session中的数据是对同一个浏览器窗口有效,如果客户端重新打开一个窗口访问WEB程序,则在第一个窗口中的Session中共享的数据在第二个窗口中取不到
- sessionID是通过Cookie传递的,如果客户端禁止了Cookie则无法传递sessionID
- Cookie
1.Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问 Cookie 信息 。
- 目前有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除 。
- 原理:将一个文本文件写入客户端的硬盘中,将要记住的内容以键值对的形式写在文本文件中 。
Cookie总结
- 只能往Cookie中写字符串,不能放对象
- 放在客户端不安全
- 一个WEB程序只支持200多个Cookie
- 客户端可以禁止Cookie
- URL重写