会话跟踪 cooike session
HTTP协议是无状态的现实中我们要保持状态就需要会话的跟踪机制:cookie和session
Cookie机制:javax.servlet.http.Cookie
1.Cookie是由服务器发送给客户端的一小撮信息(字符串),保存到客户端的浏览器中(浏览器内存/浏览器的硬盘), 然后再次访问该服务器时,把cookie信息携带到服务器,
2.服务器代码servlet中:response.addCookie(new Cookie())
底层:通过HTTP响应头把携带信息带回客户端
3.当客户端再次访问该服务器时:浏览器把cookie信息打包到请求头中携带到服务器。
只能传字符串
session
1.session代表会话
代表客户端浏览器和服务器之间的会话,一般表示从打开浏览器到关闭浏览器之间的整个过程、一次回话包含多个请求
(ServletContext[application]>HttpSession>request)
setAttribute(key,value)/getAttrabute(key)
2.当客户端第一次访问服务器,并且服务器上reqest.getSession()方法被调用时服务器会在服务器内存创建一个HTTPSession类型的对象,然后为新创造出来的session对象分配一个唯一的标识(sessionid),紧接着把session以cookie的形式发送给客户端。
3.当下一次访问服务器时,会把sessionid再以cookie的形式(请求头)回送给服务器,服务器可以通过Sessionid找到上次创建的session对象,并且找到放到session里面的内容
session是什么时候创建的:
第一次访问服务器,并且有request.getSession()方法执行时
session失效的情况
1、session.invalidate();立即失效 注销/退出
2、超过最大有效时间1800s
3、关闭浏览器
浏览器关闭=》浏览器释放内存=》sessionid没有了=》再次访问服务器不会有sessionid被携带到服务器了–》服务器会认为是新的客户端就会创建新的HttpSession对象。
session的应用:
就是能够使用setAtrribute/getAttribute的需求