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

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

Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session的更多相关文章

  1. Session or Cookie?是否需要用Tomcat等Web容器的Session

    Cookie是HTTP协议标准下的存储用户信息的工具,浏览器把用户信息存放到本地的文本文件中. Session是基于Cookie实现的. 2011年4月,武汉群硕面试的时候(实习生),面试官也问过这个 ...

  2. 【转】session和cookie详解

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

  3. session 和 cookie (转)

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

  4. Session和Cookie详解(1)

    面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...

  5. session与cookie的联系与区别

    一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你 ...

  6. linux+nginx+tomcat负载均衡,实现session同步

    linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞 ...

  7. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  8. ThinkPHP第二十六天(JQuery操作select,SESSION和COOKIE)

    1.JQuery操作select,假设<select id="my"> A:双击选项<option>事件,应该是select的dbclick事件. B:获得 ...

  9. Session与Cookie的概念原理

    前言: 本文没有任何代码,内容全部都是概念与运行原理,在使用一个技术前一定要弄清他的本质,下面会讲Session.Cookie.ServletContext的概念与他们的联系区别 Session概念 ...

随机推荐

  1. js控制图片缩放、水平和垂直方向居中对齐

    已測试兼容 IE6,IE7,IE8,火狐FF,谷歌chrome. 这里使用了jquery插件,假设你不使用jquery,略微改造一下也非常快. 网上查了些资料,用css控制兼容性不好,看去非常揪心.于 ...

  2. [cocos2dx笔记008]cocos2d 用luabridge手动绑定类

    基于cocos2dx 2.2.2版本号.这几天使用了cocostudio实现了,动画.骨骼动画.UI编辑.粒子效果,尽管有些不足,但已经算是很好了.今天尝试用lua.这个很easy.创建的时候.设置语 ...

  3. unrecognized selector sent to instance 0x10b34e810

    一个错误: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURLEr ...

  4. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  5. MyBatis学习门户网站(一)

    需要jar包:mybatis-3.x.x.jar .假设需要和spring综合,此外,我们需要增加相关的包 1:看到项目文件夹 不要在意红色 2:依照步骤: 1:增加jar包 2:创建数据源(conf ...

  6. UIScrollViewA都PI得知。

    //1.设定滚定条的样式 typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) { UIScrollViewIndicatorStyleDefa ...

  7. 三——第二部分——第二篇论文 计划建设SQL Server镜像

    本文接着前面的章节:SQL Server镜像简单介绍 本文出处:http://blog.csdn.net/dba_huangzj/article/details/27203053 俗话说:工欲善其事必 ...

  8. Facebook新框架React Native,一套搞定App开发[转]

    Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...

  9. 安全扫描工具-AppScan

    AppScan主要作用是对页面进行安全扫描的工具

  10. [LeetCode283]Move Zeros将一个数组中为0的元素移至数组末尾

    题目: Given an array nums, write a function to move all 0's to the end of it while maintaining the rel ...