一 :什么是Cookie
Cookie是在浏览器访问Web服务器的某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的一小段数据。
一旦Web浏览器保存了某个Cookie,那么它在以后每次访问该Web服务器时,都应在HTTP请求头中将这个cookie回传给Web服务器。
一个cookie主要由标识该信息的名称(name)和值(value)组成。
//创建Cookie
Cookie ck = new Coookie("code",code);
ck.setPath("/web")//设置Cookie的路径
ck.setMaxAge(-1);
//内存存储,取值有3种 >0有效期(单位秒) =0 浏览器关闭 <0 内存存储,默认为-1
response。addCokkie(ck);
// 添加到response对象中,响应发送给客服端
//注意,有效路径,当访问资源的上一级目录,不带主机名
二 :Cookie优点:
简单性:Cookie是一种基于文本的轻量结构,包含简单的键值对。
数据持久性:Cookie默认在过期之前是可以一直存在客户端浏览器上的。
Cookie缺点:
大小受到限制:大多数浏览器对Cookie的大小有4K、8K字节的限制。
用户配置为禁用:有些用户禁用了浏览器或客户端设备接收cookie的能力,因此限制了这一功能。潜在的安全风险:Cookie 可能会被篡改。会对安全性造成潜在风险或者导致依赖于Cookie 的应 用程序失败。
要注意:
Cookie默认不支持中文,只能包含ASCII字符,所以Cookie需要对Unicode字符进行编码,否则会出现乱码。
编码可以使用java.net.URLEncoder类的encode(String str,String encoding)方法
解码使用java.net.URLDecoder类的decode(String str,String encoding)方法
//使用中文的Cookie. name 与 value都使用UTF-8编码.
Cookie cookie = new Cookie(
URLEncoder.encode("姓名”,“UTF-8") ,
URLEncoder.encode(“老邢”,“UTF-8" ) );
//发送到客户端
response .addCookie( cookie) ;
Session
一:Session的概念:
Session用于记录用户的状态。Session指的是在一段时间内,单个客户端与Web服务器的一连串相关的交互过程。在一个Session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。
二 :Session原理
服务器会为每一次会话分配一个Session对象
同一个浏览器发起的多次请求,同属于一次会话(Session)
首次使用到Session时,服务器会自动创建Session,并创建Cookie存储Sessionld发送回客户端
三:Session使用
Session作用域:拥有存储数据的空间,作用范围是一次会话有效。一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话。可以将数据存入Session中,在一次会话的任意位置进行获取。可传递任何数据(基本数据类型、对象、集合、数组)
//1.获取Session
session是服务器端自动创建的,,通过request对象获取
//获取Session对象
Httpsession session = request.getsession() ;
System.out.println( "Id: "+session. getId()); //唯一标记,
//2 Session保存数据
setAttribute(属性名,Object)保存数据到session中
session.setAttribute("key" , value);
//以键值对形式存储在session作用域中。
//3 Session获取数据
getAttribute(属性名);获取session中数据
session.getAttribute("key" ) ;
//通过String类型的key访问0bject类型的value
//4 Session移除数据
removeAttribute(属性名);
//从session中删除数据
session .removeAttribute( "key");
//通过键移除session作用域中的值
//5.Session与Request应用区别
//request是一次请求有效,请求改变,则request改变
//session是一次会话有效,浏览器改变,则session改变
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行分析
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、建议:
将登陆信息等重要信息存放为Session
其他信息如果需要保留,可以放在Cookie中
6.简单的来说:
cookie就是放在你自己的电脑上面,sesson是放在服务器上面的。
cookie就像是你打开淘宝的图片,会缓存到你的本地,就是cookie。
sesson就是你打开微信,你浏览信息会记录在服务器上面,就是sesson