Java Web之Cookie和Session的理解

简介: Cookie和Session.jpg日常现象登录了某个网站,过一会儿再登录,诶,不用输入密码了,直接是登录状态了,好神奇~~~在某网站看了一部手机,接下来浏览其他网站,旁边的广告全是手机和类似信息,好恐怖~~~浏览某网站时,提示我是第66666位访问的客户,真的假的?其实这些都是Cookie和Session在后面作祟,下面就带大家学习学习这两个东东。
img_1d4abd5aaa8ba0f05e2ccde85622eb92.jpe
Cookie和Session.jpg

日常现象

  • 登录了某个网站,过一会儿再登录,诶,不用输入密码了,直接是登录状态了,好神奇~~~
  • 在某网站看了一部手机,接下来浏览其他网站,旁边的广告全是手机和类似信息,好恐怖~~~
  • 浏览某网站时,提示我是第66666位访问的客户,真的假的?

其实这些都是Cookie和Session在后面作祟,下面就带大家学习学习这两个东东。

Cookie和Session的异同

  • Cookie与Session都是用来保存用户状态信息的一种方法或者手段;
  • Cookie是保存在客户端的临时文件夹, Session是保存在服务器的内存中的,服务器使用一种类似于散列表的结构来保存信息,一个Session域对象为一个客户浏览器服务;
  • Cookie安全性较差,Session安全性较高;
  • Cookie的保存时间可以很久(以txt格式保存在客户端硬盘),Session保存的时间很短,一般是30分钟;
  • Cookie为多个客户浏览器共享,Session为一个客户浏览器独享;
  • Session是通过Cookie的机制来实现的。

两个经典问题与URL重写

1、客户端禁用Cookie,问Session还能工作吗?

  • 不能(事实)绝大多数的网站是这样,原因是没有使用URL重写机制来解决Cookie被禁用的问题。(URL重写代码量大而且只能应用在动态的页面静态的不行)
  • 能(事实)微乎其微的网站可以(比如:卓越),原因是它使用了URL重写机制。

2、 Cookie可以用来实现购物车功能吗?
能,Session能做的Cookie也能做。

** 本质 **
无论Cookie,还是URL重写,目的都是向服务器传递JSESSIONID=32位字符串的key和value名值对。

理解Cookie-Session机制

当程序需要为某个客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含了一个Session标识——称为 Session id,如果已包含一个Session id则说明以前已经为此客户端创建过Session,服务器就按照Session id把这个 Session检索出来使用。如果客户端请求不包含Session id,则为此客户端创建一个Session并且生成一个与此Session相关联的Session id,这个 Session id将在本次响应中返回给客户端保存。客户端保存这个Session id的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发回给服务器。一般这个Cookie的名字都是类似于JSESSIONID。对Session来说,除非应用程序通知服务器删除一个Session,否则服务器会一直保留它。浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器不会知道浏览器已经关闭。之所以会有这种错觉,是大部分Session机制都使用会话Cookie来保存Session id,而关闭浏览器后这个 Session id就消失了,再次连接服务器时也就无法找到原来的Session。如果服务器设置的Cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的Session id发送给服务器,则再次打开浏览器仍然能够找到原来的Session。也就实说关闭浏览器不会导致服务器端Session被删除,但是大量的Session一直在也服务器内存,服务器也受不了,所以服务器为Session设置了一个失效时间,当距离客户端上一次使用Session的时间超过这个失效时间(一般为30分钟)时,服务器就可以认为客户端已经停止了活动,才会把Session删除以节省服务器端的存储空间。

目录
相关文章
|
12天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
1天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
7 0
|
1天前
|
存储 JSON 安全
|
13天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
13天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
1月前
|
存储 自然语言处理 API
Session、cookie、token有什么区别?
Session、cookie、token有什么区别?
24 1
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
29 0
|
2月前
|
存储 安全 API
Cookie,Session和Token
Cookie,Session和Token
|
1月前
|
数据采集 存储 安全
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
|
1月前
|
存储 安全 搜索推荐
Django中Cookie和Session的使用
Django中Cookie和Session的使用
21 0