Cookie、Session

一、会话技术

会话技术分为Cookie和Session:
Cookie:数据存储在客户端本地,减少服务端的存储压力,安全性不好,客户端可以清除cookie
Session:将数据存储到服务器端,安全性相对好,增加服务器的压力

ServletContext域对象的作用范围:整个web应用(所有的web资源servlet、jsp都可以向ServletContext域中存取数据,数据是可以共享的)

数据放在服务器的技术叫Session技术:Session技术要用到Cookie

四个域对象:

Request、ServletContext、Session、PageContext 都可以通过setAttribute(“key”,value)和getAttribute(“key”)存取数据

域对象就是存储数据的区域

所有域对象都有这三个方法:

request.setAttribute("list",list);
request.getAttribute("list");
request.removeAttribute("list");

request、session、servletContext这三个的区别是范围不一样
request的范围只在转发中有效
session的范围是当前这个用户的所有操作都有效
servletContext的范围整个项目都有效
范围:servletContext>session>request>pageContext
使用原则:小的范围能完成的功能就放到小的里面

二、Cookie

将数据放在浏览器端的技术叫Cookie技术

用户没登录时,信息存放在cookie中,如果用户登录了,会把Cookie中的信息同步到服务器的数据库中,是不会放到Session中,因为像ServletContext和Session都是服务器中的一块内存区,是非常宝贵的,重启服务器所有的内存区都会被销毁,数据也就没有了。

服务器如何将Cookie设置到浏览器客户端

创建Cookie
Cookie cookie = new Cook(cookieName,CookieValue);
例子:
Cookie cookie = new Cookie("goods", "IPhone");
resp.addCookie(cookie);
Cookie会以响应头的形式发送给浏览器客户端。
Cookie中不能存中文。

服务器如何接受客户端携带的Cookie

cookie信息是以请求头的方式发送到服务器端的:
1. 通过request获得所有的Cookie:
Cookie[] cookies = request.getCookies();
2. 遍历Cookie数组,通过Cookie的名称获得想要的Cookie

Cookie在浏览器中能保存多长时间

1. 默认情况下,浏览器关闭,Cookie数据被销毁
2. 持久化存储:
Cookie.setMaxAge(10 * 60); //保存10分钟,超过10分钟后浏览器自动删除该Cookie信息
正数:将Cookie数据写到硬盘的文件中。持久化存储。并制定Cookie保存时间,时间到后,将自动销毁
负数:浏览器关闭的时候Cookie就丢失,默认值
零:表示删除同名的Cookie数据

Session

Session服务器端会话技术,再一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。但客户端需要每次携带一个标识的ID:JSESSIONID去服务器寻找自己的内存空间。所以Session技术是基于Cookie技术的,Session需要借助与Cookie存储客户的唯一标识JSESSIONID。

获得Session对象

1. HttpSession session = request.getSession(false);
得到session对象,原来有Session就直接返回,没有返回null
2. HttpSession session = request.getSession(true); //request.getSession();
创建或得到session对象,原来有Session就直接返回,没有Session自动创建新的session对象。
request.getSession();不加参数默认为true。

如何向session中存取数据

Session也是存储数据的区域对象
1. session.setAttribute(String name, Object obj);
2. session.getAttribute(String name);
3. session.removeAttribute(String name);

Session对象的生命周期

创建:第一次执行request.getSession()时创建
销毁:
1. 服务器关闭时
2. session过期/失效(默认30分钟)
注:从不操作服务器端的资源开始计时30分钟
3. 手动销毁session(注销或者退出)

注:
当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session
当使用不同的浏览器时,发送请求,即使发送相同的请求,也是不同的session
当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,也是不同的session

Session与Cookie的区别

1. Session存储数据在服务器端,Cookie在客户端
2. Session没有数据大小限制,Cookie有
3. Session数据安全,Cookie相对不安全

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值