session和cookie

1、会话

用户打开浏览器,点击了很多超链接,访问了很多web资源,到关闭浏览器,这个过程都称之为一次会话。关闭浏览器会话结束

cookie

客户端、服务端

  1. 服务端给客户端一个信件,客户端下一次请求服务端时,会将cookie一起发送给服务端
  2. 服务端接收cookie,进行判断,找到需要的cookie(根据cookie的键查找)
2、保存会话的两种技术

cookie

  • 客户端技术(响应、请求)

session

  • 服务器技术,用来保存会话信息。可以把数据保存在session中

常见场景:保存登录信息

3、cookie
  1. 从请求中获取cookie数据
  2. 服务器响应给客户端cookie
Cookie[] cookies = req.getCookies();	//获得Cookie
cookie.getName();						//获得cookie中的key
cookie.getValue();						//获得cookie中的值
Cookie cookie = new Cookie("LastLoginTime", System.currentTimeMillis()+"");			//新建一个cookie
cookie.setMaxAge(24*60*60);				//设置cookie的有效期
resp.addCookie(cookie);					//响应给客户端一个cookie

浏览器存储cookie数量:

  • 一个cookie只能保存一个信息
  • 一个web站点可以给浏览器发送多个cookie,最多存放20个
  • cookie大小有限制(4kb)
  • 浏览器存储cookie上限个数:300

删除cookie:

  • 不设置有效期,关闭浏览器时自动删除
  • 设置有效期时间为0时立即删除

生命周期:

setMaxAge()

  • 正数:表示指定秒数后过期
  • 负数:浏览器关闭时cookie删除(默认值是-1)
  • 零:马上删除cookie
4、session
  • 服务器会给每个用户(浏览器)创建一个session对象
  • 一个session独占一个浏览器,只要浏览器不关闭,这个session就存在
  • 用户登录后,整个网站都可以访问这个session
HttpSession session = req.getSession();		//获得session
session.setAttribute("name","MaybeBin-陈");	//给session存入信息
String id = session.getId();				//获得session的ID
if (session.isNew()) {}						//判断session是不是新创建
resp.getWriter().write("sessionID = " + id);

生命周期:

  • invalidate():

    调用方法使session立即失效

  • session-config配置:

<!-- 设置session的默认失效时间
当前web工程所创建的session失效时间都根据该配置实现-->
<session-config>
    <!--1分钟后session自动失效,以分钟为单位-->
    <!--session的时间不能太长,如果一旦太长,用户量大,服务器上全是session,导致服务器崩 -->
    <session-timeout>1</session-timeout>
</session-config>
5、session和cookie的区别:
  • session存储在服务器,cookie存储在用户的浏览器
  • session数据安全,Cookie相对不安全
  • session没有数据大小限制,而cookie有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值