JAVA中SESSION和COOKIE的解释

为什么需要cookie:

因为HTTP是无状态的协议,所以我们在使用浏览器访问网站的时候,服务器是怎样来区别是哪个浏览器发送的请求呢,服务器是如何给不同的浏览器发送不同的信息,这就需要我们的cookie来解决问题了。

cookie机制是采用了一种在客户端保存状态的方案,他是用户端的存储机制,当然他也需要用户端主动去开启cookie支持。

session机制是采用一种在客户端和服务器之间保持状态的方案,这是怎样的一种感念呢?如果我们在服务器端保存一个用户访问的标识,那么这种单一的保持我们还是无法辨别这是哪个客户端发来的请求,所以我们仍然需要在客户端保存一个相同服务器端的标识,所以session机制还需要借助cookie机制来达到他的目的。

cookie和session的工作原理:

cookie:当用户访问到网站时,用户获得不仅仅是这些页面,同时也获取了cookie,并且能够保存在本地磁盘中,在cookie中记录了每次用户访问站点的日期和时间信息或者是用户名密码等信息,用户在和服务器进行请求响应的同时也在不断交换其产生的cookie,并且用户会将最新的cookie存储在磁盘中,对于不同的网站,客户端存储不同的cookie信息。如果用户在关闭掉浏览器后,再次请求相同的网站信息,浏览器便会在本地磁盘上查询是否有于该URL相关联的cookie,如果有那么浏览器便将这个cookie和你的请求信息一同发送给服务器。从上面的工作流程中我们可以发现,cookie是和站点相关联的客户端保存信息的机制。只要你访问这个站点,就会用到你刚才保存的cookie。

session:当程序需要为某个客户端的请求创建一个session的时候,服务器会首先检查这个客户端的请求里是否包含有一个session的标识,我们称这个标识为sessionID,如果有那么就说明已经为客户端创建过session,服务器端就会按照这个sessionID将这个session检索出来(如果查找不到,就新建一个session),如果没有那么我们就新建一个session,并生成一个相关联的sessionID,并在本次响应中返回给客户端,这个session在服务器端会将它保存起来,而在客户端,我们怎样做呢,这里就用到了cookie的工作方式将这个sessionID保存起来,这样在当前用户不关闭浏览器的请况下,我们就会按照规则将这个标志传送给服务器。一般这个cookie的名字就类似于SESSIONID,这个sessionID的值是一个既不会重复,也没有固定规则的随机字符串。这里我们就发现了session和cookie的不同之处,session是和即时的会话相关联的,如果你将浏览器关闭,那么你的这个sessionID也会跟随着消失,这是为什么呢?有人说既然采用了cookie的保存方式为什么还会消失呢?因为他们的保存位置不同,在cookie的工作原理中我们看到了cookie是保存在本地磁盘的,而对于session呢,虽然我们采用了cookie的保存方式,但是并没有将他保存在本地磁盘,而是将它保存在了浏览器缓存里,当然你将浏览器关闭之后,缓存清空,那么你保存的session当然就会消失。而此时服务器上保存的sessionID则还没有删除,这就迫使服务器给sessionID设定了一个超时时间,如果超过了这个超时时间,服务器就可以认为客户端已经停止了活动,那么服务器自动删除掉这个sessionID来节约服务器的存储空间。而各个浏览器都有禁用cookie的功能,那么如果客户端禁用掉了cookie的功能后,我们应该怎么办呢?

通常会有以下三种方法:

一种URL重写的技术,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。

为了在整个会话的过程中始终保持状态,那么就必须在每个客户端请求服务器的路径后面都要添加上essionID。

一种是隐藏表

时间: 2024-11-09 14:11:47

JAVA中SESSION和COOKIE的解释的相关文章

PHP中SESSION与COOKIE的详细用法

1. PHP的COOKIEcookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制.PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似.1.1 设置cookie:可以用 setcookie() 或 setrawcookie() 函数来设置 cookie.也可以通过向客户端直接发送http头来设置.1.1.1 使用setcookie()函数设置cookie:bool setc

JAVA中如何读写COOKIE

Java中删除cookie Cookie[] cookies=request.getCookies(); //cookies不为空,则清除 if(cookies!=null) { String value=cookies[0].getName(); //查找用户名 if(value.equals("userName")) { cookies[0].setMaxAge(0); response.addCookie(cookies[i]); } } Java中如何读写cookie //写c

Java中的会话Cookie&&Session

会话技术 会话: 一次会话中包含多次请求和响应. 一次会话:浏览器第一次给服务器资源发送请,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求之间共享数据 方式: 客户端会话技术:cookie 服务器端和会话技术:session cookie: 概念: 客户端会话技术,将数据保存在客户端 快速入门: 使用步骤 创建cookie对象,绑定数据 new Cookie(String name,String value) 发送cookie对象 response.addCookie(Cook

PHP中Session和Cookie的探究

一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为"会话控制",生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间. 由于Http是一种无状态的的协议,只负责请求服务器,当它在服务器相应之后,就与浏览器失去了联系.不能保存用户的个人信息,就像一个商场和一个自动售货机或者普通的人之间的关系,所以为了弥补这个缺点Session才应声而出,Session需要在4.1版本以上 (

yii2.0框架中session与cookie的用法

我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用     function actionS1(){         echo $this->id." ";         echo $this->action->id." ";         设置session,通过session组件来设置         Yii::app()->session['username'] =

php中session和cookie的使用及区别

1.cookie的使用 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 cookie 的值. 如何创建 cookie? setcookie() 函数用于设置 cookie.setcookie(name, value, expire, path, domain);     //setcookie("user", "Alex Po

php中session和cookie

cookie 每次请求页面的时候进行验证,如果用户信息存储在数据库中,每次都要执行一次数据库查询,给数据库造成多余的负担.cookie可以被修改的,所以安全系数太低.session是存储在服务器端面的会话,相对安全,并且不像Cookie那样有存储长度限制.由于Session是以文本文件形式存储在服务器端的,所以不怕客户端修改Session内容.实际上在服务器端的Session文件,PHP自动修改session文件的权限,只保留了系统读和写权限,而且不能通过ftp修改,所以安全得多.对于 Cook

webform中Session和Cookie对象的用法

(一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 相同点:每一台电脑访问服务器,都会是独立的一套session或者Cookies,key值都一样,但是内容都是不一样的. 不同点:●Session的保存位置是保存在服务器内存上,Cookies保存在用户硬盘上 ●Session没有持久的,在不对页面进行任何操作的情况下,它的保存周期就是20分钟:Cookies可以持久也可不持久,取决于用户 2.Session重点 Session不要滥用,也不要不用,

JAVA中Session

会话状态的维持是开发Web应用所必须面对的问题,有多种方法可以来解决这个问题,如使用Cookies,hidden类型的表单域,或直接把状态信息加到URL中等,还有Servlet本身提供了一个HttpSession接口来支持会话状态的维持,在这里我们主要介绍基于这个接口的会话状态的管理. Session的发明是为了填补HTTP协议的局限.请注意HTTP协议是如何工作的--用户发出请求,服务器作出响应,这种用户端和服务器端的联系就是离散的,非连续的.HTTP协议不能提供允许服务器跟踪用户请求的功能.