Session相关知识整理 -思维导图

Session的学习可以和Cookie结合起来,使用时也是如此,因为这两者非常相似,只是对比来说,Cookie局限性会比较大。
可以先看看Cookie的特点:
1)会话数据保存在客户端
2)会话数据只能是字符串类型,不能保存中文的
3)会话数据容量有限制,一个cookie不能超过4kb,一个站点20个cookie
4)不适合存敏感数据
因为有局限性,所以保存会话数据需要配合Session技术来完成。

鉴于Session和Cookie两者的相似性,所以在做思维导图的时候,也使用了相同的模板,以便查询的时候,能对Cookie进行一定的联想记忆。
具体看图:
在这里插入图片描述应用示例:
1、获取对象,存值

  // 得到session对象
  HttpSession session = request.getSession();
  
  // 向session中存值
  session.setAttribute("test", "测试session");

2、获取对象,取值

  // 得到session对象
  HttpSession session = request.getSession();
  
  // 取值
  String test = (String) session.getAttribute("test");

3、简单操作示例

  // 获取session的id
  session.getId();
 
  // 根据key清除相应数据
  session.removeAttribute("test");
  
  // 销毁session对象
  session.invalidate();

注:
获得Session对象有两个方法可以使用,分别为无参的getSession()和有参的getSession(boolean arg0)方法。
这两个方法的运行流程为:
1)服务器得到对应的编号,在服务器内存中查询是否存在对应的编号的session对象。
2)如果找到对应的session对象,返回这个对象
3)如果找不到对应的session对象,有可能返回null,也有可能是创建新的session对象。

这两者的区别:
1、无参的getSession()方法如果找不到对象,就会new一个新的对象。
2、有参数的getSession(boolean arg0)方法如果传入的是true,那么找不到对象就会new一个新的对象,如果传入的是false,找不到对象就会直接返回一个null。

所以,无参的getSession()方法就相当于有参方法传入一个true,也即是getSession(true)和getSession()效果是一样的,在大多数情况下,使用的都是无参的getSession()方法。

发布了17 篇原创文章 · 获赞 1 · 访问量 281

猜你喜欢

转载自blog.csdn.net/yemuyouhan/article/details/103383213