Java中的Cookie和Session

Cookie:
Cookie其实就是使用了浏览器的数据存储技术,我们把需要浏览器存储的数据响应给浏览器,告诉浏览器这些数据需要存储起来。
Cookie的使用:

Cookie c=new Cookie(String key, String value);//创建Cookie对象并存储数据,键值对的方式存储
response.addCookie(c); //响应Cookie信息给客户端

如果没有设置Cookie的存储有效期,那么Cookie就会存储在浏览器的运行内存中,浏览器关闭了Cookie也就失效了

c.setMaxAge(3*24*3600);//设置Cookie的有效期,参数是Cookie存储的有效时间(以秒为单位)

设置好Cookie的存储有效期后,那么Cookie就会存储在客户端的硬盘中,在有效期内每次请求都会附带该信息,除非设置有效路径。
如果没有设置Cookie的使用有效路径的话,默认Cookie信息存储好之后,每次请求都会附带该信息

c.setPath(String uri);//设置Cookie的有效路径,参数是浏览器地址栏的uri

设置好Cookie的使用有效路径后,Cookie的使用有效路径就会得到限制,Cookie只有在请求有效路径的时候浏览器才会附带该信息。
Session:
Session 是依赖 Cookie 的服务器端的数据存储技术,用户第一次访问服务器时,服务器会创建一个Session对象给此用户,并将该Session对象的JSESSIONID使用Cookie存储到浏览器中,保证用户的其他请求能够获取到同一个Session对象,也保证了不同请求能够获取到相同的数据。注意:JSESSIONID使用Cookie存储在浏览器的运行内存中,浏览器关闭即失效。
Session的使用:

HttpSession hs = request.getSession();//创建Session对象

如果请求中拥有JSESSIONID,则返回其对应的Session对象,如果请求中没有JSESSIONID,则创建新的Session对象,并将其JSESSIONID作为从Cookie数据存储到浏览器内存中,如果Session对象是失效了,也会重新创建一个Session对象,并使用Cookie将其JSESSIONID存储在浏览器内存中。
如果没有设置Session的有效期的话,Session默认存储时间为 30分钟,30分钟内session对象没有被使用则会自动销毁,如果使用了则重新计时。

hs.setMaxInactiveInterval(3600);//设置Session有效期,参数是Session存储的有效时间(以秒为单位)

如果想要Session在有效时间没有结束时被销毁,则可以设置 Session强制销毁

hs.invalidate();//设置Session强制销毁

Session的存储

hs.setAttribute(String key,Object value);//Session存储数据,键值对的方式存储

获取Session中的数据

hs.getAttribute(String key);//获取Session中的数据,返回的数据类型为Object,所以如果使用String接收的话需要强制转换

如果存储和获取发生在不同的请求中时,存储要先于获取执行,如果获取 Session中不存在的数据则返回 null。
只要在JSESSIONID和Session对象不失效的情况下,用户的任意请求在处理时都能获取到同一个Session对象,也就是说在JSESSIONID和Session对象不失效的情况下Session对象的作用域为整个项目内。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值