Cookie是HTTP协议标准下的存储用户信息的工具。浏览器把用户信息存放到本地的文本文件里。

Session是基于Cookie实现的。

2011年4月,武汉群硕面试的时候(实习生)。面试官也问过这个问题。

当时仅仅知道Session是基于Cookie的。可是没有想到“不使用Tomcat等Web容器的Session,仅仅使用Cookie也能够实现自己的Session。完毕会话管理,并且据说性能更好。”

曾经的做法:

使用HttpRequestSession保存用户信息,很方便。

配置一个登录拦截器,从Session中获得当前用户的信息。

假设须要登录,但Session中没实用户信息,就强制跳转到登录页。否则,正常运行。

假设不须要登录,不管Session是否实用户信息,正常运行。

优点:使用自带的Session。编程更方便,不须要额外处理。

坏处:性能不好。据说Session占居的内存会许多。

之前做的Web项目。用户都不大,没有考虑过这个问题。

为了实现“保持登录”这个功能,要用到Cookie,须要做一下特殊处理。

Tomcat的Session能够存放到Redis中。保证server重新启动的情况下。已经登录的用户仍然保持登录。

把Java的Session存到Redis。这个还没有实现过。

创业的做法:

创业做ITFriend的时候,我们是把Node.js的Session数据存到Redis中。

如今的做法:

不使用HttpRequestSession,使用Cookie,在用户端保存key。用户信息缓存到Redis中。

每次请求来的时候,依据Cookie信息。得到key,依据缓存,推断用户是否登录过。

配置一个登录拦截器,默认须要登录。使用@LoginNeedless注解,就不须要登录。不管是否登录,都能够把用户的信息放到线程上下文ThreadLocal<User>中。

在实际过程中。发现一个问题。ThreadLocal<User>是线程局部变量,可是Tomcat的线程是“线程池” 实现的,两个不同用户的ThreadLocal可能是同一个,

因此在请求和開始的时候,清空用户信息: LoginUtil.setCurrentUser(null);

防止不同用户的数据互相干扰。

理论上的性能排序:

Cookie+Redis >= 容器Session+Redis > 容器Session

原文首发:http://fansunion.cn/article/detail/56.html

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4799019.html

Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session相关推荐

  1. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  2. Shiro 登录、退出、校验是否登录涉及到的Session和Cookie

    前提 我们的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager.这就意味着前者的session为Shiro的,后者的sessio ...

  3. 【转】session和cookie详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  4. Session与Cookie介绍

    本文转至链接:https://blog.csdn.net/tanyunlong_nice/article/details/47188659 一.Session与Cookie介绍 这些都是基础知识,不过 ...

  5. Session 和 Cookie 的区别与联系

    一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为你浏览某个网页的时候,WE ...

  6. 浅谈Session与Cookie的关系

    阅读目录 一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服 ...

  7. session与cookie的简单使用

    嘛~最近在用php做网页的时候苦于每当跳转页面(即使是跳转回自己来更新显示内容)数据就会更新,看来不得不学一下session与cookie的使用了. 首先说一下session和cookie的区别吧. ...

  8. 对session和cookie的一些理解

    对session和cookie的一些理解 由于项目需要,最近用session容器比较多,传载的同时加上了自己的一些理解,不足之处还请大家补充和纠正. 一.cookie机制和session机制的区别 * ...

  9. Django中session和cookie简单的使用

    一.简单的理解 session和cookie是request下的两个对象,操作他们的值就是在操作字典,设置他们的属性就是调用方法. 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整 ...

最新文章

  1. win8 网络 连接计算机名称,win8本地网络联接的名字怎么改
  2. scikit-learn随机森林调参小结
  3. Google Brain 团队的研究方法
  4. Atitit hsv转grb  应该优先使用hsv颜色原则 方便人类
  5. java batch批量
  6. 请简述计算机软件系统与硬件系统的关系,电脑硬件与软件的关系是什么?
  7. 会计证考试《财经法规与职业道德》第四章精选题
  8. 一 ASP.NET Html 表单
  9. java虚拟机 第二章Java内存区域与内存溢出异常
  10. Linux入门基础分享[一]
  11. java导出excel 科学计数法_基于Java将Excel科学计数法解析成数字
  12. 1074. Reversing Linked List (25)
  13. edge浏览器下载位置设置在哪里设置
  14. java break递归_【Java】递归总结
  15. 13 款高逼格且实用的 Linux 运维必备工具
  16. 【转】Ubuntu下配置支持Windows访问的samba共享
  17. WPF 入门笔记之基础
  18. as ssd中文版测试软件,AS SSD Benchmark
  19. comsol初学经验分享
  20. 从OPPO TWS耳机看OPPO声学的体面回归

热门文章

  1. 用“连接”勾勒角色:《死亡搁浅》亡人的设计及其背后的故事谜题
  2. Serekh塞拉赫资源包背后的创作过程
  3. Python基础——PyCharm版本——第二章、数据类型和变量(超详细)
  4. show slave status\G中的Read_Master_Log_Pos和Relay_Log_Pos的(大小)关系
  5. Linux RH5平台下使用Oracle ASM创建数据库
  6. sqlserver 的一些好用的插件
  7. 12月23号 Foundation库NSString操作
  8. Asp.Net Core(.net内核)
  9. html-----020----事件
  10. mysql selectprovider_使用Mybatis的@SelectProvide会不会导致注入攻击?