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. 集合hashCode()方法和equals()办法

    1.哈希码:         Object中的HashCode方法会返回该对象的的内存真实地址的整数化表示,这个形象的不是真正抵制的整数值就是哈希码. 2.利用哈希码向集合中插入数据的顺序?     ...

  2. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

  3. liunx tomcat多站点配置

    <Host name="nav" debug="0" appBase="webapps"  unpackWARs="true ...

  4. Linux经常使用的命令(十) - nl

    nl命令在linux系统中用来计算文件里行号. nl 能够将输出的文件内容自己主动的加上行号.其默认的结果与 cat -n 有点不太一样. nl 能够将行号做比較多的显示设计,包含位数与是否自己主动补 ...

  5. webstorm创建nodejs + express + jade 的web 项目

    webstorm创建nodejs + express + jade 的web 项目 前简单了解过nodejs,觉得用nodejs来做个网站也太麻烦了,要自己拼html的字符串返回,这能做网站嘛? 最近 ...

  6. 【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施

    原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...

  7. Lua 环境结构 --Linux

    curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz tar zxf lua-5.2.3.tar.gz cd lua-5.2.3 make linux ...

  8. POJ 1659 Frogs&#39; Neighborhood(度序列组成)

    意甲冠军  中国 依据Havel-Hakimi定理构图即可咯  先把顶点按度数从大到小排序  可图的话  度数大的顶点与它后面的度数个顶点相连肯定是满足的  出现了-1就说明不可图了 #include ...

  9. JBoss配置解决高并发连接异常问题(转)

    这两天一个项目在做压力测试的时候,发现只要并发数超过250个,连续测试两轮就会有连接异常出现,测试轮数越多出现越频繁,异常日志如下: Caused by: com.caucho.hessian.cli ...

  10. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问

    A *搜索算法称为A星算法.这是一个在图形平面,路径.求出最低通过成本的算法. 经常使用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上. 首先:1.在Map地图中任取2个点,開始点和结束点 ...