Cookie的读写

 简单的总结Cookie,泛泛之谈的可以把Cookie理解为,Http协议的网络中,response响应包含特定Cookie到本地,request请求包含特定Cookie到服务器。

第一次请求一般不会包含特定Cookie。

HttpServletRequst类的getCookies()方法,返回一个Cookie数组,该数组包含了请求中的所有Cookie。如果没有包含任何Cookie,getCookies()方法返回null。

HttpServletResponse类的addCookie(Cookie)方法,添加一个Cookie到响应中去。

Cookie类:

该类有这样一个方法。setMaxAge(int expiry)方法中有一个int基本类型的参数expiry。它用于设置Cookie的有效期。该参数以秒为单位。例如:(60)为60秒,(60*60)为一小时。

该参数有三种情况:

1.如果expiry大于零,就指示浏览器在客户端硬盘上保存当前Cookie,有效期为expiry秒。

2.如果expiry等于零,就指示浏览器删除当前Cookie。

注意:当前Cookie指的是当前浏览器中的Cookie,删除时只会删除当前浏览器的Cookie,不会把保存在客户端硬盘上的Cookie删除掉。如果在有效期内,再打开一个新的浏览器依然可以获得到最初保存在客户端的Cookie,修改Cookie也是这样的原理,修改后只会修改到当前浏览器中的Cookie。

3.如果expiry小于零,就指示浏览器不要把Cookie保存到客户端硬盘。Cookie仅仅在当前浏览器进程中(其它浏览器进程无法访问到该Cookie)。但浏览器进程关闭,Cookie也随之消失。

###Cookie默认有效期为-1###

Cookie的共享范围问题:

改变Cookie的共享范围,可以用过Cookie的setPath(String path)和setDomain(String doamain)方法来达到不同的需求。

假设有两个服务器分别为S1和S2。在服务器S1中有两个应用app1和app2,服务器S2中有应用app3。

用户通过一个浏览器(同一个浏览器进程)来访问这3个app应用。

现在app1应用的一个Web组件在浏览器上保存了一个Cookie,默认情况下处于安全考虑只有app1应用可以访问该Cookie。如果希望改变该Cookie的共享范围,在app1应用的Web组件写该Cookie时通过上文提到的两个方法实现。

1.让app1应用所在服务器的所有应用共享:

app1应用的Web组件在写Cookie时:利用setPath(“/")给定参数“/”是app1应用所在服务器的根路径,因此app1应用所在服务器中的所有应用共享app1应用写入的Cookie。

2.只能让app1应用所在服务器的某个应用访问:

app1应用的Web组件在写Cookie时:依然是利用setPath("/app2/")给定参数“/app2/”中的app2可更换为任意指定可访问Cookie的应用名称。此时只有app2可以访问该Cookie就连app1自己此时也无法访问到。

3.只能让app1应用所在服务器的某个应用下的某个子路径下的Web组件访问:

app1应用的Web组件在写Cookie时:依然是利用setPath("/app1/sub/")给定参数“/app1/sub/”中的app1和sub可更换为任意指定可访问Cookie的应用路名称和子路径名称。此时只有app1下的sub子路径下的Web组件可以访问该Cookie就连app1顶层路径此时也无法访问到。

4.让其他服务器中的所有应用都可以共享:

app1应用的Web组件在写Cookie时:利用setDomain(".eugene.com")来实现。参数“.eugene.com”的意思是。假定要共享app1应用所写Cookie的服务器域名为“www.eugene.com”,此时参数就为上文方法所传参数(去掉www紧跟的“.”符号以前的字符串)。以上设置是的“www.eugene.com”服务器下的所有应用共享app1应用所写Cookie。

5.要让其他服务器下的某个应用访问:

app1应用的Web组件在写Cookie时:除了要利用setDomain(".eugene.com")来实现外,还必须利用setPath("/appX/")给定参数“/appX/”中的appX可更换为任意指定可访问Cookie的应用名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值