客户端打开与服务器的连接 发出请求到服务器响应客户端请求的全过程称之为会话。一个用户的所有请求都属于同一个会话
对同一个用户向服务器发送请求以及服务器进行响应的过程的监视
(1)、web应用是使用http协议的
(2)、http协议是无状态的协议。无状态是指,客户端服务端数据交换结束之后,客户端服务器就会断开连接。再次交换数据会建立新的连接
(3)、会话跟踪的目的是为了判断是哪个客户端连接的服务器。 简单来说就是为了数据共享,将用户与同一用户发出的不同请求之间关联起来。
(1)、cookie :携带了客户端的个性化信息,在服务端创建,通过response对象相应给客户端并且保存在客户端(浏览器缓存中)。 以键值对的形式保存在某个目录下的文本文件内,(由于 cookie 是存在客户端的,所以服务端需要加入一些限制确保 cookie 不会被恶意使用)
(2)、Session:也携带了客户端的个性化信息。可以在客户端创建,也可以在服务端创建,保存在服务器端,比cookie安全。用户第一次访问服务器的时候,第一次创建,只有访问jsp servlet这种动态资源的时候才会自动创建。访问静态资源(html、图片等)不会创建Session。
(可以理解为一个状态列表,拥有一个唯一识别符号 sessionID ,客户端通常存放于 cookie 中。服务器收到 cookie 后解析出 sessionID ,再去 session 列表中查找对应的session信息。依赖cookie,如果 cookie 被禁用也可以放在 url 中)
(3)URL重写,每次自动创建session的时候都会生成一个sessionid,url重写就是在客户端发起请求的时候将sessionid重新写入url地址中 ,从而达到对客户端的跟踪
(4)隐藏表单域
1、存储位置不同:cookie数据保存在客户端,session数据保存在服务器端。
2、安全性不同:session 比 cookie 安全;别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。
3、存取值的类型不同:cookie 只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,session 可以存任意数据类型。
4、存储大小不同:单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存20个cookie;session 可存储数据远高于 cookie。
5、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能;可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中