servlet cookie和session

Cookie

服务端设置Cookie后,浏览器会在下次的请求中自动带上Cookie

 

 同一个项目中设置Cookie后,该项目下的其他请求可以共享Cookie(默认)

若想要在同一个Tomcat容器中实现不同项目之间Cookie共享,需要将Cookie的作用域设置为容器的根路径,如下:

cookie.setPath("/");  

若想要实现在不同的tomcat容器中实现Cookie共享,需要通过设置一级域名来实现贡献,如news.baidu.com 和 music.baidu.com

cookie.setDomain(".baidu.com");

Cookie的作用时长设置:
  setMaxAge(int seconds)
  1.正数:将Cookie数据写到硬盘文件中,并指定Cookie的存活时间,时间到后,Cookie文件自动失效(关闭浏览器后指定存活时间内仍然有效)
  2.负数:默认值,关闭浏览器后Cookie失效
  3.零:立即删除Cookie信息

Cookie存在浏览器客户端

Session 存在服务端
HttpSession session = request.getSession();
//设置属性
session.setAttribute("name","tom");
//读取属性
session.getAttribute("name");
//移除属性
session.removeAttribute("name");
//设置有效期,单位为秒,-1代表永不过期
session.setMaxInactiveInterval(1000);
//使其失效
session.invalidate();

客户端关闭,服务起不关闭,两次获取的session不一致
  可以通过将获取的sessionID封装到Cookie里面做一个持久化,这样浏览器关闭后在打开获取到的session仍然一致


客户端不关闭,服务器关闭,两次获取的session的不一致
  这种场景Tomcat服务起已经对session做了钝化和活化
  钝化:在服务起正常关闭之前,将session持久化到硬盘上
  活化:在服务起重启之后,将持久化得session文件转换为内存中得session对象(反序列化)

session被销毁得形式
  1、失效时间到了后(默认30分钟),可以通过在tomcat得配置文件web.xml中设置默认失效时间
  

        2、服务起被关闭时,session也会被销毁

   3、调用函数去销毁session  

    session.invalidate();
Session 特点:
  session用于存储一次会话得多次请求得数据,存在服务器
  session可以存储任意类型,任意大小得数据
  
Session与Cookie得区别
  1、session存与服务起端,Cookie存在客户端
  2、session没有数据大小限制,Cookie有
  3、session数据安全,Cookie相对不安全
  






posted @ 2020-07-23 10:10  caoyp  阅读(176)  评论(0编辑  收藏  举报