1.会话技术的理解:
1.会话:就是用户打开浏览器,访问web服务资源,会话建立,一旦有一方断开连接,会话结束,
在一次会话中包含 多次 请求和响应。
从浏览器发出请求到服务端响应数据给前端之后,一次会话(在浏览器和服务器之间)就被建立了
会话被建立后,如果浏览器或服务端都没有被关闭,则会话就会持续建立着
浏览器和服务器就可以继续使用该会话进行请求发送和响应,上述的整个过程就被称之为==会话==。
2.会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间==共享数据==
服务器会收到多个请求,这多个请求可能来自多个浏览器
服务器需要用来识别请求是否来自同一个浏览器
服务器用来识别浏览器的过程,这个过程就是==会话跟踪==
服务器识别浏览器后就可以在同一个会话中多次请求之间来共享数据
问题:
为什么现在浏览器和服务器不支持数据共享?
1.浏览器和服务器之间使用的是HTTP请求来进行数据传输
2.HTTP 协议是 无状态 的,每次浏览器向服务器请求时,服务器都会将该请求视为==新的==请求
3.HTTP协议设计成无状态的目的是让每次请求之间相互独立,互不影响
4.请求与请求之间独立后,就无法实现多次请求之间的数据共享
2.客户端会话跟踪技术 ---- Cookie
1.概念:Cookie 客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。
cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie_秃头披风侠.的博客-CSDN博客_cookie是什么
Cookie就是一些数据,用于存储服务器返回给客服端的信息,客户端进行保存。在下一次访问该网站时,客户端会将保存的cookie一同发给服务器,服务器再利用cookie进行一些操作。利用cookie我们就可以实现自动登录,保存游览历史,身份验证等功能。
3.服务端会话跟踪技术 ---- Session
==Session==:服务端会话跟踪技术:将数据保存到服务端。
Session是存储在服务端而Cookie是存储在客户端
存储在客户端的数据容易被窃取和截获,存在很多不安全的因素
存储在服务端的数据相比于客户端来说就更安全
session的基本使用
在JavaEE中提供了HttpSession接口,来实现一次会话的多次请求之间数据共享功能。
具体的使用步骤为:
获取Session对象,使用的是request对象
HttpSession session = request.getSession();
Session对象提供的功能:
存储数据到 session 域中
void setAttribute(String name, Object o)
根据 key,获取值
Object getAttribute(String name)
根据 key,删除该键值对
void removeAttribute(String name)
这两个技术都可以实现会话跟踪,它们之间最大的区别:==Cookie的数据信息是存储在浏览器端而Session的数据信息是存储在服务器端==
4.SpringMVC中使用session
SpringMVC中session的使用_Arno_Yu的博客-CSDN博客_session springmvc
5.session和Cookie简单面试题
1.cookie和session的区别?
都是会话跟踪技术,再一次会话内可以完成多次请求和响应的数据共享。
1.储存位置:session数据储存在服务器,cookie数据储存在浏览器
2.安全性:session 比 cookie更安全
3.数据大小: cookie 3KB. session理论上没有大小限制.
4.生命周期: cookie默认会话级别,可以设置长期存储setMaxAge(). session默认30分钟,也可以立刻销毁.
5. 服务器性能: cookie不会占用服务器资源,session会占用服务器资源.
结论:
cookie是用来保证用户在未登录状态下身份的识别.
session是用来保证用户登陆后的数据.