cookie和Session

2.1 Cookie是什么?

Cookie:小甜点 
 
特点:客户端的技术,将共享数据保存在客户端(即浏览器)中. 
 

在第一次请求的时候,将共享数据发送到浏览器中进行保存,以后每次请求都将之前保存的共享数据发送到到服务器。


2.2 cookie的操作细节

创建Cookie对象,设置共享数据


Cookie c = new Cookie(String name,String value); 
将Cookie响应给浏览器
response对象.addCookie(c);

获取请求中的Cookie

Cookie[] cs = request对象.getCookies(); 
 for(Cookie c:cs){ 
 
if("usernumber".equals(c.getName())){ 
 
   } 
} 



修改Cookie的共享数据

1.重新创建一个新的Cookie,名称要和修改的数据的Cookie一样

2,先获取需要修改的Cookie对象,在调用的setValue(String newValue)重新设值;

操作Cookie的生命周期

c.setMaxAge(int expiry) 
expiry>0:设置Cookie能够存活expiry秒,即使关闭浏览器,不影响Cookie中的共享数据。比如:十天内免
登录:setMaxAge(60602410)
expiry=0:立即删除当前的Cookie信息
expiry<0:缺省值,关闭浏览器的时候销毁*

删除Cookie的共享数据

setMaxAge(0); 

Cookie中的key和value不支持中文,可以编码

//设置编码 
Cookie c = new Cookie("usernumber",URLEncoder.encode(number,"UTF-8")); 
//获取的时候设置解码 
usernumber = URLDecoder.decode(value,"UTF-8"); 
Cookie的作用与缺陷

作用是实现回话跟踪

Cookie的缺陷

1.实现Cookie信息很麻烦

2.Cookie不支持中文

3。一个Cookie只能存贮字符串

4,Cookie在浏览器有数量限制

5.共享数据是保存在浏览器中的很容易造成数据的泄露;

Session是什么

session是服务端的绘画技术,是将数据保存在服务端,其实底层就是Cookie;

获取Session的对象

request.getSession();

设值共享数据

Session对象.setAttribute(String name,Object value)

Session 可以存贮任何类型的数据,比如登录用户的信息,可以封装到User对象中。


修改Session的共享数据

重新设置一个同名的共享数据即可

获取共享数据

<c:name>//这个是最简单的方法
${sessionScope.test}<br><%//输出session%>
${test}<br><%//输出request%>

删除Session的共享数据

Session.removeAttribute(String name);

销毁Session

session.invalidate()
Session中共享数据的属性名的命名规范:XXX_IN_SESSION



Cookie与Session的区别
1. Cookie中只能保存ASCII字符串,Session中可以保存任意类型的数据,甚至Java Bean乃至任何Java类、对象等 
 
2. 隐私策略不同。Cookie存储在客户端,对客户端是可见的,可被客户端窥探、复制、修改。而Session存储在服务器
上,不存在敏感信息泄露的风险 
 
3. 有效期不同。Cookie的过期时间可以被设置很长。Session依赖于名为JSESSIONI的Cookie,其过期时间默认为-1,
只要关闭了浏览器窗口,该Session就会过期,因此Session不能完成信息永久有效。如果Session的超时时间过长,服务
器累计的Session就会越多,越容易导致内存溢出。 
 
4. 服务器压力不同。每个用户都会产生一个session,如果并发访问的用户过多,就会产生非常多的session,耗费大量
的内存。因此,诸如Google、Baidu这样的网站,不太可能运用Session来追踪客户会话。 
 
5. 浏览器支持不同。Cookie运行在浏览器端,若浏览器不支持Cookie,需要运用Session和URL地址重写。 
 
6. 跨域支持不同。Cookie支持跨域访问(设置domain属性实现跨子域),Session不支持跨域访问。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值