Session和Cookie的区别

一,Cookie

1.Cookie常用属性

属性名描述
String name该Cookie的名称。Cookie一旦创建,名称便不可更改
Object value该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
int maxAge该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
boolean secure该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
String path该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
String domain可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
String comment该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明
int version该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

2.Cookie生命周期
(1)、cookie的数据存在客户端,未设置有效期,则存储在计算机内存中,设置了有效期,则存储在硬盘中。
(2)、cookie较session安全性更低,可以通过解析本地的cookie文件进行cookie欺骗
(3)、若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。同样,cookie也可以设置有效期,设置了有效期的cookie不会随着浏览器的关闭而消失,而是到了有效期才会消失
(4),Cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。
(5),cookie不能跨浏览器,新开的窗口会重新创建新的cookie,但是子窗口不会重新创建cookie

二,Session

1.Session的常用方法

方法描述
void setAttribute(String attribute, Object value)设置Session属性。value参数可以为任何Java Object。通常为Java Bean。value信息不宜过大
String getAttribute(String attribute)返回Session属性
Enumeration getAttributeNames()返回Session中存在的属性名
void removeAttribute(String attribute)移除Session属性
String getId()返回Session的ID。该ID由服务器自动创建,不会重复
long getCreationTime()返回Session的创建日期。返回类型为long,常被转化为Date类型,例如:Date createTime = new Date(session.get CreationTime())
long getLastAccessedTime()返回Session的最后活跃时间。返回类型为long
int getMaxInactiveInterval()返回Session的超时时间。单位为秒。超过该时间没有访问,服务器认为该Session失效
void setMaxInactiveInterval(int second)设置Session的超时时间。单位为秒
void putValue(String attribute, Object value)不推荐的方法。已经被setAttribute(String attribute, Object Value)替代
Object getValue(String attribute)不被推荐的方法。已经被getAttribute(String attr)替代
boolean isNew()返回该Session是否是新创建的
void invalidate()使该Session失效

2.Session生命周期
(1)、seesion中的数据是保存在服务器中
(2)、session可以保存任何数据类型
(3)、session的默认有效期是30min,不过也可以手动配置

因为session的数据是放在服务器中,当短时间大访问量时,过多的session数据会给服务器造成压力,但是session的有效时间可以在配种文件中定义,可以通过配置减少服务器压力 (时间以分钟为单位)

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

(4)、session的生命周期自第一次访问浏览器时创建,结束有两种方式

  • 销毁:可以使用 request.getSession().invalidate();销毁session,session生命是周期结束
  • 过期:当session存在时间超过有效期,自动销毁

三,Cookie和Session的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值