Cookie&Session的原理与细节

COOKIE


COOKIE的原理:

  1. 服务器创建Cookie对象,保存会话数据,把Cookie数据发送给浏览器,    response.addCookie(cookie);     (响应头:set-cookie: name=jacky)
  2. 浏览器获取cookie数据,保存在浏览器缓存区,然后在下次访问服务器时携带cookie数据       (请求头: cookie: name=jacky)
  3. 服务器获取浏览器发送的cookie数据     request.getCookies();
COOKIE的细节:

1)cookie的数据类型一定是字符串,如果要发送中文,必须先对中文进行URL加密才可以发送。URLEncoder.encode();

2)setPath(path): 修改cookie所在的有效路径。什么是有效路径? 如果把该cookie设置到某个有效路径下,然后当浏览器访问这个有效路径的时候,才会携带cookie数据给服务器。

3) setMaxAge(整数) : 设置cookie的有效时间

      正整数: 表示超过了正整数的数值的时间,cookie就会丢失!(时间单位:秒)

      负整数: 表示如果浏览器关闭了,cookie就会丢失!(默认情况下)

       0   :  表示删除同名的cookie

4)cookie可以有多个,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB

SESSION

SESSION的原理:

1)服务器创建Session对象,服务器会给这个session对象分配一个唯一的标记JSESSIONID

2)把JSESSIONID作为Cookie发送给浏览器

3)浏览器得到JSESSIONID保存下来,在下次访问时携带这个JSESSIONID去访问服务器

4)服务器得到JSESSIONID,在服务器内存中搜索是否存在指定JSSESSINOID的session对象

5)如果找到,则返回这个session对象

6)如果找不到,可能直接返回null,或者再创建新的session对象。

   HttpSession session = request.getSession();

结论: 通过JSESSIONID在服务器中查询对应的session对象。


SESSION细节:

1)setMaxInactiveInterval(秒数): 设置session对象的有效时间,如果设置为0或负数永远不会销售session。

问题:session在什么销毁?

一次会话的时间!注意不是浏览器关闭,session对象就销毁!!

默认情况: 等待30分钟空闲时间,session对象才会销毁。

<!-- 设置全局的session对象的过期时间(分钟)web.xml里<web-app>下添加,注意最小设置1,只能是整数 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
2)可以让JSESSIONID不会随着浏览器关闭而丢失!!!

/**
		 * 设置JSESSIONID的时间,不会随着浏览器关闭而丢失!
		 */
		Cookie c = new Cookie("JSESSIONID",session.getId());
		c.setMaxAge(1*30*24*60*60);//1个月
		response.addCookie(c);
3)直接手动销毁sessino对象
invalidate();

4)  创建或得到session对象

request.getSession(true) 等价于request.getSession() :

创建或得到session对象,查询session对象(查询JSESSIONID),如果没有sessino对象,则创建新的session对象

request.getSession(false)  :

得到session对象。 查询session对象,如果没有session对象,直接返回null



COOKIE与SESSION的对比

Cookie特点:                                       

  1. 会话数据放在浏览器端
  2. 数据类型只能string,而且有大小限制的
  3. 相对数据存放不安全。

Session特点:

  1. 会话数据放在服务器端(服务器内存),占用服务器资源
  2. 数据类型任意类型,没有大小限制的。
  3. 相对安全

 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值