例如在会话的过程中,需要记住用用户购买的商品,且在用户结账的时候,可以记下购买的商品,并且进行结账.
在会话过程中就必要要解决这个问题.那么其中就必须要掌握cookie 和session
我们可以通过servlet技术来保存数据
ServletContext,request ;这个可以保存数据但是数据只是在一次存储中用到,显然和我们要解决的问题是不可以的
引进:Cookie 和session 技术,这两个技术都是用来 保存 用户购买商品信息的据说(这是她最常用到的地方)
//下面以购买商品这个为例子进行讲解
●Cookie技术:
Cookie 是一个 基于客户端的技术 ,她是将 用户购买的商品信息 保存在用户自己的 浏览器中,那么只要用户购买了就会保存下来,
只有在最终用户 点击结账(即提交到服务器里头去) 时候 ,这样就这可以结账了
cookie之细枝末节:
一个cookie 只能标识一种信息; 每个cookie 至少 含有 一个标识该信息的名称(NAME) 和 设置值(VALUE);
且 name 信息是 cookie的 唯一 具有识别的,换句话说 你想找到这个cookie 那么就找这个name值;
一个 WEB站点 ,一次可以给 WEB浏览器 传递多个Cookie;一个 web浏览器 也可以存储多个 WEB站点 传递过来的Cookie;
一个 浏览器 最多可以存放300个cookie,一个 站点 最多可以发送 20个cookie; 且每个传送的cookie的大小限制为4KB;
如果创建一个cookie,将她发送到浏览器,那么她默认是一个会话级别的(即存储在浏览器里头),当用户关掉浏览器时,她就给释放了,要是想永久存放(即将浏览器里的cookie存放到磁盘里头),那么需要用到maxAge技术,并且这里要传入一个以毫秒为单位的时间.(既然将到了设置永久cookie,那么问题来了怎么删除永久cookie呢??)
删除永久cookie:将cookie的最大失效设置为0,注意了,删除cookie时,path必须一致,否则就无法删除.
●Session是一个 基于服务器的技术 ,她是直接将购买的商品直接保存到服务器端 , 针对用户的浏览器不同而不同(这是因为 每次session对有做一个id),
当用户点击结账的时候, 此时根据浏览器的信息(即session的生成ID) ,浏览器带过来的信息 ,再再找到 购买的商品,从给用户结账
session的创建:
request.getSession();这个创建的方法自己在创建是会做一个判断,判断这个session是否在当前的浏览器中已将创建过的session对象; 要是已将存在,那么她这里的对象就是session对象的引用;
实现session域的数据共享:获得session对象后,再通过调用session的api-----setAttribute(),getAttribute(),removeAttribute()
注意,不同的浏览器,创建的session对象是不同;这是因为 在访问的时候,回写的 响应中靠session的id号来实现,在下次访问的时候,找到对应的session对象.
session的原理到底是怎么样的呢?
首先通过回写cookie对象实现 name=value jsessionid=session的id号 ;
在关闭浏览器之后,实现再次打开浏览器时,任可以找到 之前的 session对象?
通过 设置cookie的有效期
通过上面的操作可以关闭了浏览器后,还可以找到session对象;
要是浏览器禁用了cookie,要怎么获得session对象呢?
通过url重写的方法实现,在url地址后拼接上 jsessionid=session的id号
总结
cookie和session 都可以存放数据,她们有什么区别呢?
cookie是将用户的数据写到用户自己的浏览器中;
session是将用户的数据写到用户独占的session中(服务器端);