会话技术: Cookie 和 Session

会话技术

会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话。

Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保存在客户端,Session将数据保存在服务器端。

Cookie技术

1.Cookies是存储在客户机的文本文件,可以保存一系列的信息。通常服务器有三个步骤来识别不同的客户机:
  服务器脚本发送一系列cookies至浏览器。比如名字,年龄,ID号码等等。
  浏览器在本地机中存储这些信息。
  当下一次浏览器发送任何请求至服务器时,它会同时将这些cookies信息发送给服务器,然后服务器使用这些信息来识别用户或者做某些其它事情。

2.Cookies通常在HTTP信息头中设置(虽然JavaScript能够直接在浏览器中设置cookies)。在JSP中,设置一个cookie需要发送如下的信息头给服务器:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html

Set-Cookie信息头包含一个键值对,一个GMT(格林尼治标准)时间,一个路径,一个域名。键值对会被编码为URL。有效期域是个指令,告诉浏览器在什么时候之后就可以清除这个cookie。

3.如果浏览器被配置成可存储cookies,那么它将会保存这些信息直到过期。如果用户访问的任何页面匹配了cookie中的路径和域名,那么浏览器将会重新将这个cookie发回给服务器。浏览器端的信息头长得就像下面这样:

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

4.Cookie 对象常用的方法

public void setDomain(String pattern) 设置cookie的域名,比如w3cschool.cc
public String getDomain() 获取cookie的域名,比如w3cschool.cc
public void setMaxAge(int expiry) 设置cookie有效期,以秒为单位,默认有效期为当前session的存活时间。如果不设置,那么只在内存中处理此Cookie,不保存到磁盘,浏览器关闭后消失。
public int getMaxAge() 获取cookie有效期,以秒为单位,默认为-1 ,表明cookie会活到浏览器关闭为止
public String getName() 返回 cookie的名称,名称创建后将不能被修改
public void setValue(String newValue) 设置 cookie的值
public String getValue() 获取cookie的值
public void setPath(String uri) 设置cookie 的路径,默认为当前页面目录下的所有URL,还有此目录下的所有子目录
public String getPath() 获取cookie 的路径
public void setSecure(boolean flag) 指明cookie是否要加密传输
public void setComment(String purpose) 设置注释描述 cookie的目的。当浏览器将cookie展现给用户时,注释将会变得非常有用
public String getComment() 返回描述cookie目的的注释,若没有则返回null

5.使用JSP设置cookie包含三个步骤:

(1)创建一个Cookie对象: 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。
Cookie cookie = new Cookie("key","value");
注意,名称和值中都不能包含空格或者如下的字符:
[ ] ( ) = , " / ? @ : ;
(2)设置有效期:调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。
cookie.setMaxAge(60*60*24);
(3) 将cookie发送至HTTP响应头中:调用response.addCookie()函数来向HTTP响应头中添加cookies。
response.addCookie(cookie);

6.删除Cookies
删除cookies非常简单:从request中取得已经存在的cookie,将其有效期设置为0,然后再重新添加进响应头中。

7.实例演示显示上次访问时间

Cookie cookie = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
  for (Cookie c : cookies) {
    if (c != null && LAST_VISIT_TIME.equals(c.getName())) {
    cookie = c;
    break;
    }
  }
}
if (cookie != null) {
  try {
    String time = cookie.getValue();
    String s = "上次访问的时间是:" + new Date(Long.parseLong(time)).toString();
    response.getOutputStream().write(s.getBytes());
  } catch (Exception e) {
  }
} else {
  response.getOutputStream().write("欢迎您光临本站!".getBytes());
}

cookie = new Cookie(LAST_VISIT_TIME, new Date().getTime() + "");
response.addCookie(cookie);

时间: 06-08

会话技术: Cookie 和 Session的相关文章

会话技术cookie与session

目录 会话技术cookie 会话技术 cookie 服务器怎样把Cookie写 给客户端 服务器如何获取客户端携带的cookie session session简介 Session如何办到在一个servlet当中存数据, 如何获取Session对象 怎样向session当中存取数据 session的生命周期 JsessioID持久化 会话技术cookie 会话技术 ? 什么是会话 用户开一个浏览器 点击多个超链接,访问服务器多个web资源 然后关闭浏览器,整个过程称之为一个会话. 和打电话一样,

会话技术cookie和session详解

什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每个用户的数据. 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户商品为用户结帐. 会话技术分类 会话技术会为两类 Cookie Cookie是客户端技术,程序把每个用户的数

Java web 会话技术 cookie与session

一.会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据. 二.保存会话数据的两种技术 1.Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,web资源处理的就是

JAVA基础之会话技术-Cookie及Session

至此,学习三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会话,直至关闭浏览器为止结束.在此过程中,每次产生请求时均会产生一次cookie,同时会产生一个JESSIONID进入到客户端进行创建内存空间,下次调用直接寻找此唯一的ID值.数据存储在两个地方均有利弊!需要注意的是,浏览器关闭,session并没有销毁! 一.会话技术简介: 1.存储客户端的状态: 因为Http协

会话技术cookie和session

1.什么是cookie? 服务器在客户端保存的用户信息,不用登录名密码等....就是cookie 例如现在,用户点击登录,把登录名和密码,复选框信息,传入到服务器,验证成功,则把用户名和密码保存到该 客户端,在服务器端需要的时候可以从客户端读取 用途: A.保存用户名.密码,在一定时间内不用重新登录 B.记录用户访问网站的喜好(有无背景音乐) C.网站的个性化,不如定制网站的服务,内容 步骤: 1.在服务器创建 Cookie c = new Coolie(String name,String v

07.会话跟踪技术cookie与session

会话跟踪技术cookie与session 01.会话跟踪:会话路径技术使用Cookie或session完成: 我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的! 无法记录前一次请求的状态.但HTTP协议中可以使用Cookie来完成会话跟踪! 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术 02.Cookie概述 Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对. 客户端会保存Cookie,并会标注出Cookie的来源(哪个服务

2014-07-09 Java Web的学习(5)-----会话管理(Cookie和Session)

1.什么是会话 会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待会话,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话.而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做会话.因此在谈论会话的时候要注意上下文环境.而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保

会话技术——Cookies和Session详解

会话技术 (一) 概述.用途以及分类 (1) 基本概述 概述:会话是浏览器和服务器之间的多次请求和响应 也就是说,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止的这段时间内容产生的多次请求和响应,合起来叫做浏览器和服务器之间的一次会话 (2) 为什么要使用会话技术呢? 实际上会话问题解决的还是客户端与服务器之间的通信问题,通过一些会话技术,可以将每个用户的数据以例如cookie/session的形式存储,方便以后用户访问web资源的时候使用 假定场景:A和B两人在某个网上购物商场登陆账

会话跟踪技术--cookie和session 小结

学习过servlet的都知道,servlet是单例多线访问的,所以我们不能设置servlet成员变量来存放浏览器的访问数据.怎么解决浏览器的访问数据,让不同访问者能够访问到自己的数据呢? 相信学习完了cookie和session技术之后,读者会明白这个问题. 我们在浏览器上使用http协议在网络上传输数据的时候,服务器对于http的状态处理有两个方式,cookie和session. 笔者对于cookie设session的理解是这样的:当我们想要记录浏览器与服务器之间的交互的时候,通常的方法就是