浏览器与服务器之间的通信是通过HTTP协议进行通信,但HTTP协议是无状态协议,他不保存客户信息,即当连接一次后就断开了,下一次请求会重新连接,这样就需要告诉服务器你和上一次的连接的人是不是同一个用户,那么就需要用到会话跟踪技术才能实现
URL重写在客户端浏览器不支持Cookie的情况下使用的,它是客户端浏览器请求服务器时,URL地址后面加上类似于 “SESSIONID=***”形式的参数,服务器端通过获取SESSIONID关键字来获取会话值。
在程序第一次访问服务器端时,服务端并不能确认客户端浏览器是否支持Cookie。因此,当服务器第一次发出请求时,服务端会默认采用URL重写,也就是将SESSIONID写到URL地址中传递。
核心代码:String SessionId=request.getRequestedSessionId();
当客户端发送请求后,服务器会根据提交给客户端浏览器的信息自动检查客户端是否启用了Cookie,如果启用,将不再进行URL重写。如果没有,则继续使用URL重写。
特点 参数存放在url中,有长度限制Cookie禁用下仍可以使用没有持久性,一旦浏览器关闭就结束隐藏表单域是将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示,浏览时看不到,源代码中才有
特点 参数是存放在实体里,没有长度限制,所以只支持POST方法,不支持GET方法Cookie禁用下仍可以使用没有持久性,一旦浏览器关闭就结束Cookie是保存在浏览器中的一个小文件,其包含多个键值对
服务器使用 Set-Cookie 响应头传输多个参数给浏览器,浏览器将其保存为 Cookie,客户端请求时可以通过读取Cookie信息发送到服务器,这样就保证了Cookie有效时,都可以让服务器识别出是同一个客户端了
特点 参数存放在头部里,有长度限制,但是这个限制是服务器设置的Cookie被禁用时就无法使用了可以在浏览器中保存一段时间,只有在设置Cookie失效后,才会需要重新输入信息每个用户都有一个不同的Session,各个用户之间不能共享。Session保存在服务器端,可以进行信息的存放,如果Session内容过于复杂,当大量客户访问服务器时,可能会导致内存溢出。
当客户端第一次请求时,会在服务器端创建一个Session对象并产生一个SessionID来标识这个Session对象,然后将这个SessionID放入到Cookie中发送到客户端, 这样下一次访问时SessionID会发送到服务器中,在服务器端就可以识别同一用户的请求了
特点 可以将会话数据全部存放到服务器端,减轻客户端及网络的压力,但会加剧服务端的压力当Cookie被禁用时,也会失效有一定的持久性,当Session失效后就无法进行识别了