Servlet体验之旅(二)——Session、Cookie

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

SessionCookie的含义:

Session

一种服务器端的技术,在服务器端创建,通常是采用散列表来存储信息,保存的数量可大可小。例如Tomcat的session对象就是采用HashMap存储键值对的。

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

Cookie

一种客户端技术,用于跟踪用户会话的一种方式,当然Session也可以用来跟踪用户会话,只是实现原理有些不同罢了。Cookie是由服务器端发送给客户端的一个信息片段,存储在浏览器的内存中,或者是以文本形式保存在用户的硬盘上。存放的数据量受到限制,大多数浏览器为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:存储在客户端浏览器中,队客户端是可见的,客户端的一些程序可能窥探,复制甚至修改cookie中的内容。

Session:存储在服务器上,对客户端是透明的,不存在敏感信息泄露的危险。

3.有效期:

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

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

4.对服务器的负担:

Cookie:保存在客户端,不占用服务器资源,如果并发浏览的用户非常多,Cookie是很好的选择。

Session:保存在服务器端,每个用户都会产生一个Session。如果并发访问的用户非常多,会产生非常多的Session,消耗大量的内存。

5.跨域名:

Cookie:支持跨域名访问。

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

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

1.在服务器端不保存Session,完全不状态

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

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

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

5.基于NFS的Session共享

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

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

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

Servlet体验之旅(二)——Session、Cookie

时间: 2024-11-17 00:48:51

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

Session&Cookie

session和cookie的作用,存无状态的客户端的数据.session是把无状态的客户端的数据存放在服务器当中,cookie是把无状态的客户端的数据存储在客户端本地. 一.会话技术 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器记住客户端状态(区分客户端) 2.会话技术 从打开一个浏览器访问某个

Session Cookie的HttpOnly和secure属性

Session Cookie的HttpOnly和secure属性 一.属性说明: 1 secure属性 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容. 2 HttpOnly属性 如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本.Applet等)将无法读取到Cookie信息,这样能有效

session cookie原理及应用

一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session.有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间 ①.最混乱的是“用户(客

session & cookie(li)

Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie). Session指的是会话,在一次交互的过程中,可以记录住用户的过程,内容保存在服务器端.session判断是否是同一个,需要客户端返回特定

[转载]JavaEE学习篇之----Session&&Cookie

原文连接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一下Session和Cookie的相关知识,首先我们来看一下Cookie的相关知识: 一.Cookie 简介: Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,web资源处理的就是用户

会话技术Session&Cookie

一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪     里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器   记住客户端状态(区分客户端) 举例购物过程: 2.会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Cookie和Sessio

认证 协议 JWT OAuth Session Cookie

本文翻译自Auth-Boss. 如果有翻译的不恰当或不对的地方, 欢迎指出. 成为一个认证老司机, 了解网络上不同的身份认证方法. 本文档的目的是记录和编目Web上的身份验证方法.认证指的是创建一个系统的过程,用户可以通过该系统"登录"在线服务,并授予对受保护资源的访问权限.以下引用可能更好地总结我想要解释的内容: 客户端认证涉及向Web上的服务器证明客户端(或用户)的身份.[1] How 我写作风格简洁,会用到一些技术词. 免责声明:本文档不作为包含所有认证方法的网络的目录;本文档也

webpy使用笔记(二) session/sessionid的使用

webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶着重复的基本工作,从在学校时候就养成了追究原理的习惯,从而有了这篇session的使用和说明. PS:其实有些总结的东西挺好的,想分享给大家看,而不是枯燥的代码,这东西说实话对其他人用处不大,但都被移除首页了~~ webpy中的session 下面为官方的例子,用session来存储页面访问的次数,

老生常谈session,cookie的区别,安全性

一,为什么session,cookie经常会有人提到 做web开发的人基本上都会用session和cookie,但是仅仅只是会用,并不知道session和cookie的真正的工作原理,都只是凭着感觉来猜测.web开发者只要利用它们来完成工作就行了,所以每个人的理解基本都会有大同小异,我想这就是session,cookie经常会被讨论的原因.本文也是根据个人经验,以及个人所学,对session,cookie的一些看法,纯属个人见解,希望得到大家的更正和建议. 二,什么cookie cookie分为