我们知道Session和Cookie都是用于会话跟踪的,仅仅是实现的方式不大一样,那么他们到底有什么不同呢?以下跟着我脚步来了解一下:

SessionCookie的含义:

Session

一种server端的技术,在server端创建。一般是採用散列表来存储信息,保存的数量可大可小。

比如Tomcat的session对象就是採用HashMap存储键值对的。

用于保存每一个用户的专用信息。它的生存期是用户持续请求时间加上一段时间。

Cookie

一种client技术。用于跟踪用户会话的一种方式。当然Session也能够用来跟踪用户会话,仅仅是实现原理有些不同罢了。Cookie是由server端发送给client的一个信息片段,存储在浏览器的内存中。或者是以文本形式保存在用户的硬盘上。存放的数据量受到限制,大多数浏览器为4K.

Application:

用于保存全部用户的公共数据信息,假设使用Application对象,一个须要考虑的问题是不论什么操作都要在Application_OnStart事件(global.asax)中完毕。

以下是一张这三个对象存放数据的一个对照表格:

因为本篇文章主要是想比較一下SessionCookie,所以以下重点比較这两者:

1.存取方式:

Cookie:仅仅能保存ASCII字符串。假设须要存取Unicode字符或者二进制数据,须要进行UTF-8,GBK或者BASE64方式的编码。不能直接存取Java对象。存储略微复杂的信息,使用Cookie比較困难。

Session:能够存取不论什么类型的数据,String。Integer。List。Map等。

能够直接保存Java
Bean价值不论什么java类。对象等。

使用起来很方便。能够把Session看作是一个Java容器类。

2.隐私安全:

Cookie:存储在client浏览器中,队client是可见的,client的一些程序可能窥探。复制甚至改动cookie中的内容。

Session:存储在server上,对client是透明的,不存在敏感信息泄露的危急。

3.有效期:

Cookie:要想达到长期的记录效果Cookie还是一个比較好的选择。设置maxAge属性

Session:依赖于名为JSESSIONID的cookie,而cookie
JSESSIONID的maxAge默觉得-1,仅仅要关闭浏览器该Session就会消失。

4.对server的负担:

Cookie:保存在client。不占用server资源,假设并发浏览的用户非常多。Cookie是非常好的选择。

Session:保存在server端,每一个用户都会产生一个Session。假设并发訪问的用户许多,会产生许多的Session,消耗大量的内存。

5.跨域名:

Cookie:支持跨域名訪问。

Session:仅在他所在的域名内有效。

高扩展Web应用HTTP
Session
共享方案:

1.在server端不保存Session。全然不状态

2.基于浏览器Cookie的Session共享。

3.基于数据库的Session共享。实现分布式应用间Session共享

4.基于应用server、Servlet容器的Clustering机制

5.基于NFS的Session共享

6.基于Terracotta、Ehcache、JBossCache等Java
Caching方案实现Session共享

7.基于Memcached/Tokyo
Tyrant等Key-Value DB的Session共享

结束语:笔者知识有限。对资料的理解水平也有限,因此这里仅仅是稍作笔记总结,望批评指正。

Servlet体验之旅(二)——Session、Cookie的更多相关文章

  1. [Java] Servlet工作原理之二:Session与Cookie

    (未完成) 一.Cookie与Session的使用简介 1 Cookie Cookie 用于记录用户在一段时间内的行为,它有两个版本:Version 0 和 Version 1,分别对应两种响应头 S ...

  2. Servlet会话管理二(Cookie)

    Cookie是在HTTP协议下,将服务器传递给浏览器的的少量信息保存到浏览器客户端的一种技术,通过这种技术,即使在浏览器被关闭或链接中断的情况下,用户仍可以维护Cookie中的数据. Cookie是经 ...

  3. 【转】接口测试Session/Cookie笔记(二)

    Windows系统运行计算器命令:calc python显示上一步操作命令:Alt+p python显示上一步操作结果:_(英文下划线) Session是存放在服务器的键值对 ,用于保存客户端的某个特 ...

  4. 接口测试Session/Cookie笔记(二)

    Windows系统运行计算器命令:calc python显示上一步操作命令:Alt+p python显示上一步操作结果:_(英文下划线) Session是存放在服务器的键值对 ,用于保存客户端的某个特 ...

  5. session & cookie(li)

    Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...

  6. [转载]JavaEE学习篇之——Session&&Cookie

    原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...

  7. session cookie原理及应用

    一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,中 ...

  8. Session Cookie的HttpOnly和secure属性

    Session Cookie的HttpOnly和secure属性 一.属性说明: 1 secure属性 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTT ...

  9. JSP + Session Cookie详解

    篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页 ...

随机推荐

  1. HDU 1171 Big Event in HDU(多重背包)

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  2. NYOJ_94 cigarettes 递归VS迭代

    题目地址 分析: 英文题事实上看懂意思和正常的也都差点儿相同.就算有几个单词不认识也无伤大雅. 一共同拥有n支烟,每天抽k支. 每抽完k支,会得到一仅仅. a组数据.  输入n k的个数.输出一共抽了 ...

  3. 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)

    相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); ...

  4. Unity3D脚本编程--基本概念

    1. 简单介绍 在Unity3D中,游戏对象(GameObject)的行为是由附加其上的脚本来控制的,游戏开发人员通过编写脚本来控制游戏中的全部对象,如移动Camera等. GameObject能够被 ...

  5. 0x05 排序

    说是排序结果就是各种奇技淫巧 中位数被坑多了久病成医,例题一题搞笑一题糖果传递(昨晚精神那么好效率还那么差) #include<cstdio> #include<iostream&g ...

  6. 手游服务器端接入google的SDK

    在接入google的SDK之前,当然先要用你的google开发者账号要去申请你接入的应用,这些步骤就直接省略了具体的步骤可以查看这篇博文:http://blog.csdn.net/hjun01/art ...

  7. spring-session与redis实现session共享

    一.准备 两个不同端口号的输出request.getLocalPort() + " ---> " + request.getSession(true).getId()的简单S ...

  8. JS判断客户端是否是iOS或者Android或者ipad(一)

    通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端.代码如下<script type="text/javascript"> var u ...

  9. node——文件写入,文件读取

    ru //实行文件操作 //文件写入 //1.加载文件操作,fs模块 var fs = require('fs'); //2.实现文件写入操作 var msg='Hello world'; //调用f ...

  10. Kendo UI diagram 更改connnect线颜色,及shapes的属性值

    1.改diagram中连线的颜色:redraw一下就OK // Change the Line Green diagram.connections[indexS].redraw({ stroke:{ ...