会话包括有状态会话和无状态会话。
有状态会话是指在网络通信过程中,服务器需要记住客户端的状态信息,以便后续的通信能够继续使用这些信息。
无状态会话是无法持续保存信息,http超文本传输协议中的http属于无状态会话
如何保存会话?
1.将状态保存在客户端 cookie上
2.将状态保存在服务端 session上
cookie
cookie是服务器创建的,然后通过响应发送给客户端并保存在浏览器上的一小块信息,它会在浏览器下次发起请求时被携带并发送到服务器上
cookie访问过程
1.编写访问请求url到服务器
2.服务器创建cookie对象,并通过respondse将cookie响应给客户端
3.接受服务端响应的cookie信息,并存储
4.再次向服务端发起访问请求并携带cookie信息
5.从请求中获取cookie信息
session
session是每一个游览器(客户端)所唯一的,这个是怎么实现的呢?其实,在访问一个网站时,在HTTP请求中往往会携带一个cookie,这个cookie的名字是JSESSIONID,这个JSESSIONID表示的就是session的id,这个是由服务器创建的,并且是唯一的。服务器在使用session时,会根据JSESSIONID来进行不同操作。
session访问过程
1.编写访问请求url到服务器
2.服务端创建session,对应一个jsessionid
3.jsessionid保存到cookie
4.再次向服务端发起访问请求并携带jsessionid
5.获取session信息
当浏览器禁止了cookie的使用,那我们该如何应对?
我们可以使用请求转发和重定向来继续使用session
请求转发是一种服务器行为,当客户端请求到达之后,服务器进行转发。
特点:可以转发至网站内任意资源,可以访问WEB-INF
一次请求,数据再request域共享
地址栏不发生改变
服务端行为
重定向:服务器指导的客户端行为,客户端发出一个请求,被服务器接收处理之后,服务器给客户端一个响应(一个新的地址),当客户端接收到新的地址之后,立马发起第二次请求,服务器接收并响应
特点:客户端行为,访问不了WEB-INF
两次请求,数据在request域不共享
可以重定向到任意地址(可以跨域)