会话跟踪技术

  • 会话:用户打开浏览器,访问web浏览器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可能包含多次请求和相应
  • 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求间共享数据
  • HTTP协议是无状态的,每次浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求间共享数据
  • 实现方法:

1.客户端会话跟踪技术:Cookie
2.服务端会话跟踪技术:Seesion
image.png

Cookie基本使用

  • Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
  • Cookie基本使用

1.创建Cookie对象,设置数据
Cookie cookie = new Cookie(“key”,”value”);
2.发生Cookie到客户端,使用response对象
response.addCookie(cookie);
3.获取客户端携带所有的Cookie,使用request对象
Cookie[] cookies = request.getCookie();
4.遍历数组,获取每个Cookie对象,fer循环
5.使用Cookie对象方法获取数据
cookie.getName();
cookie.getvalue();
image.png

Cookie原理

  • Cookie的实现是基于HTTP协议的
    • 响应头:Set-cookie
    • 请求头:Cookie

image.png

Cookie使用细节

  • Cookie存放时间

默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被摧毁
setMaxAge(int seconds):设置Cookie存活时间
1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除
2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
3.零:删除对应的Cookie

  • Cookie存储中文

Cookie不能直接存储中文
如需要存储,则需要进行转码:URL编码
image.png

Session基本使用

Session

  • 服务端会话跟踪技术:将数据保存到服务端
  • JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
  • 使用:

1.获取Session对象
HttpSession session = request.getSession();
2.Session对象功能:
void setAttribute(String name,Object o);存储数据到Session域中
Object getAttribute(String name);根据key,获取值
void removeAttribute(String name);根据key;删除该键值对

Session原理image.png

image.png

Session使用细节

image.png