(二十九)会话跟踪技术总结(Cookie、Session)

会话跟踪技术

WHY WHAT HOW

大纲

什么需要会话跟踪技术?

因为http是无状态的,不能区分用户是谁,实际上很多需求需要区分请求用户是谁

HTTP无状态:服务器不清楚哪个请求是哪个用户发送的


Cookie

Cookie是客户会话跟踪端技术

Cookie如何使用?
1.在服务端怎么创建Cookie , 
Cookie cookie new Cookie("名称","值")

2.响应,把cookie数据写回浏览器
响应对象.addCookie(cookie);

3.如何在JSP和Servlet中获取Cookie
${cookie.名称.value}

4.获取cookie数据
通过遍历 请求对象.getCookies() 返回的是一个数组 ,遍历数组
    cookie.getName(); cookie.getValue();

特点:Cookie 客户端存储技术,数据最终存在浏览器中,请求如果符合条件就会自动携带到服务器

思考: 与对比路径传参,有什么好处,有什么缺点

自己不用手动传参,相对安全一些,但不是绝对安全. 问题:还得反复校验
问题:
  • Cookie是由服务器端程序创建的
  • Cookie从服务器端带到了客户端
  • Cookie最终存在了浏览器,再一次访问服务器端资源时实现数据共享
  • Cookie中数据的传递方向:浏览器->服务器(Cookie) ->浏览器(存入)->服务器(获取Cookie数据)


Cookie存活时间

默认情况下,会话Cookie存在于内存中,浏览器关闭了,会话结束

删除Cookie
Cookie对象.setMaxAge(0);  //存的是秒数
resp.addCookie(Cookie对象); //删除后需要重新发送给浏览器去更新

Cookie的域和路径

来限制Cookie的数据,也是保护了数据


Session

Session是服务器端技术.服务器在运行时可以为每一个用户浏览器创建一个其独享的session对象

通过Cookie jessionid 字符串的唯一性

存入session的cookie是会话cookie,浏览器关闭了,对应的session就会丢失

Session API
  • getSession() :判断是否存在Session,存在则获取,不存在则创建新Session对象返回
  • setAttribute(String name,Object value) :设置属性名和属性值
  • getAttribute(String name):通过属性名获取属性值
  • removeAttribute(String name) :从Session中移除指定属性名的属性值
  • invalidate() :移除整个Session对象,删除所有的属性和属性值


Session超时管理

可以设置会话的有效时间

局部设置

session.setMAInactiveInterval(int interval)

Session属性命名 格式规范

XX_IN_SESSION ,这个属性名是唯一的

Session如何使用,有什么特点?

如何创建或获取session对象,存入数据?

HttpSession session =请求对象.getSession()

session.setAttribute("名称",值);

如何获取session 中的数据,如何移除session中的数据

session.getArrribute("名称");
session.invalidate()

若是在JSP中使用EL直接获取即可

对比Cookie Session有什么好处

相对于Cookie更安全,`还是得反复校验,但是不用去数据库
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值