`
hikin
  • 浏览: 268079 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

[转]Cookie和Session概述

阅读更多

1、  Cookie 概述

Cookie 技术有 Netscape 首创和使用,而后也受到 Microsoft IE 的支持。现在绝大多数浏

览器都支持这项技术,虽然在很多浏览器中设定为“禁用”( disable )状态。

       Cookie 是用来保存用户信息的。一个 Cookie 是一则短小消息,首先在处理客户的第一次请求时由 Web 服务器传给客户浏览器。当浏览器收到从服务器传来的 Cookie 后,会以名称—值( name value )的形式记录用户访问当前网站的一些数据(例如用户 ID 、密码、访问该网站的次数和上次访问该网站的时间等),并将这些数据保存在客户端。在随后的每次请求中,数据从浏览器中传回到服务器,这样服务器就可以对用户进行跟踪了。

       Cookie 的工作过程是,首先浏览器向服务器提出页面请求,服务器在响应中给客户分配一个 ID 传给浏览器,浏览器在随后的每次请求中都携带分配给它的 ID ,这样服务器在处理请求时就知道其来源了。 Servlet 是通过将 Cookie 加到响应的头部发送给客户的,而客户则将之加到请求的头部,自动返还给服务器。

       Servlet API 中用于创建和设定 Cookie 的类是 javax.servlet.http. Cookie 。创建方法为:

              public Cookie(String name String value )

该方法以给定的名称和值创建一个 Cookie 对象。几个 Cookie 可以具有同一名称。值的更改可用方法 setValue 实现。 Cookie 的属性如下:

方法

功能

void setComment(String comment)

String getComment()

分别设定和获取 Cookie 的说明

void setDomain(String pattern)

String getDomain()

分别设定和获取 Cookie 的作用域

void setMaxAge(int expiry)

int getMaxAge()

分别设定和获取 Cookie 的有效期。参数为 0 时指示浏览器立刻删除该 Cookie ,为负数表示 Cookie 的有效期直到用户退出网站才结束

void setPath(String uri)

String getPath()

分别设定和获取 Cookie 的作用路径

void setValue(String new Value)

String getValue()

分别设定和获取 Cookie 的与名称相关联的值

void setSecure(Boolean flag)

Boolean getSecure()

分别设定和判断 Cookie 是否只通过安全协议传输

void setVersion(int version)

int getVersion()

分别设定和获取 Cookie 所遵守的协议的版本号

使用 Cookie 时应注意以下几点:

□前面已提到, Cookie 是通过 HTTP 头部传递的,因此设置 Cookie 要在输出任何响应之前。也就是说,如果用 Writer 给客户返回文本数据,那么必须在使用 Writer 之前,调用响应对象的 addCookie

□在设置 Cookie 时最好加上作用路径和作用域等参数。因为如果用户访问的其他网站有同名的 Cookie 变量,那么用户的 Cookie 有可能被覆盖掉。

□客户浏览器对 Cookie 有限制,要求每个 Cookie 不超过 4KB ,每个站点最多接受 20 Cookie ,每个用户最多 300 个。

Cookie 的安全性是个受人关注的问题。由于 Cookie 能向客户机读写数据,因此很多人认为使用它不安全,而且 Cookie 能记录用户访问站点的信息,这有损于用户的隐私。因此很多浏览器都提供禁用 Cookie 的功能。

 

2、  Session 概述

Cookie 只能存放小量信息,而且使用范围有一定的限制。 Servlet 内置的 Session 跟踪功

能比 Cookie 更强。

       Session 跟踪是一种机制, Servlet 利用它在一定的时间内对源自同一客户的一系列请求的状态进行跟踪,并且保存有关用户的信息。一个 Session 通常对应于一个用户,而该用户可以多次访问同一网站。 Session 可以被同一客户存取的若干个 Servlet 共享,因此是 Servlet 之间交换客户信息的一种手段。它与 Cookie 一样也是以名称—值的形式保存信息的,但不同的是, Session 保存的数据可以是对象类型的,而且保存在 Web 服务器端,而不像 Cookie 那样保存在客户端。与 Cookie 一样, Session 也是有有效期的。

       Servlet API 提供的有关 Session 的接口是 javax.servlet.http.HttpSession 。创建和获取用户的 Session 则应该调用请求对象的 getSession 方法。

              public HttpSession HttpServletRequest.getSession(Boolean create)

它返回与做出请求的客户相关联的 Session 。当用户尚未有 Session 时,该方法便为之创建一个(如果参数 create true )或者返回 null (如果参数设为 false )。通常情况下,参数应该取 true

       一般情况下,当用户关闭浏览器、转到别的网站或者离开客户机长久不用时,当前的 Session 应该失效。但由于服务器并不能探测上述事件,因而只好为 Session 设定有效期。当客户在一段时间内没有作请求时,服务器认为用户不再使用该网站,从而不在维持 Session 的有效性。为一个 Session 单独设定有效期的方法是 HttpSession setMaxInactiveInterval ,参数以秒为单位。实际上, Session 的默认有效期可以在 Web 应用的发布描述器 web.xml 中配置。

              ……

              <web-app>

                     <session-config>

                            <session-timeout> 60 </session-timeout>   <!—minutes-->

                     </session-config>

                     ……

              </web-app>

分享到:
评论

相关推荐

    Cookie&SessionJsp-授课

    本文将详细介绍 Cookie 和 Session 在 JSP 中的应用,包括会话管理概述、Cookie 和 Session 的概念、分类和应用场景。 1. 会话管理概述 会话管理是指在 Web 开发中,实现不同请求之间的数据共享和交互的一种机制。...

    cookie.Session

    #### Session概述 **定义与作用** - **定义**: Session是一种服务器端的技术,用于跟踪用户的会话状态。服务器为每个用户的会话创建一个唯一的Session ID,并将此ID存储在客户端的Cookie中。 - **作用**: 主要用于...

    session与cookie的区别以及配置使用

    综上所述,Session和Cookie各自适用于不同的场景。Cookie适用于需要在客户端持久存储少量数据的情况,而Session则更适合于需要在服务器端存储大量会话数据的场景。开发者应根据实际需求选择合适的技术方案。

    Cookie-Session机制详解.txt

    ##### 2.2 Session概述 Session也是一种用于跟踪用户会话的状态管理技术,但是它与Cookie不同的是,Session信息主要存储在服务器端。当用户首次访问网站时,服务器会创建一个唯一的Session ID,并将其通过Cookie的...

    第21章 Cookie和Session.pdf

    3.1 Session概述 Session是服务器端状态管理的一种方式,用于在多个请求之间存储特定用户的数据。每个用户会话都有一个唯一的Session ID,这个ID通过Cookie在客户端和服务器之间传递。 3.2 Session原理 当客户端...

    session实质就是cookie

    ##### 3.1 Session概述 **Session**是一种服务器端技术,用于维护用户与服务器之间的会话状态。与Cookie不同,Session数据存储在服务器端,因此不受客户端限制,更加安全可靠。 **特点**: - **服务器端存储**:...

    j2ee实验二:学习使用Session和Cookie

    ### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 在现代Web应用开发中,理解和掌握会话管理和用户认证是至关重要的。本实验旨在通过一系列实际操作来帮助学生熟悉J2EE环境下Session和Cookie的工作...

    cookie与session深入讲解

    Cookie 和 Session 是 Web 开发中用于管理用户状态的两种重要技术。它们主要用来解决 HTTP 协议无状态的问题,即服务器无法识别同一用户发出的多个请求。下面将深入讲解这两种技术,尤其是 Cookie。 1. **Cookie ...

    cookie和session

    #### 二、Session概述 **Session**是一种服务器端的技术,用于跟踪用户在整个Web应用程序中的活动。与Cookie不同,Session的信息存储在服务器端,因此更加安全可靠。 ##### 2.1 Session的工作原理 - **创建**: 当...

    cookie、session及一些缓存的对比

    本文将深入探讨几种常见的状态管理方式,包括Cookie、Session、Application、Cache以及隐藏域/ViewState/ControlState、ControlState和Profile,对比它们的特性和适用场景。 1. **状态管理与数据库** 状态管理的...

    jsp cookie+session实现简易自动登录.docx

    通过使用JSP(JavaServer Pages)、Cookie 和 Session 技术,可以有效地实现这一功能。本文将详细介绍如何利用 JSP、Cookie 和 Session 来构建一个简易的自动登录系统。 #### 基本概念 1. **JSP**: 是一种基于Java...

    Javaweb-session和cookie笔记

    ### Javaweb-session和cookie笔记 #### 一、会话技术概述 在Web开发中,会话技术是一项非常重要的技术,它可以帮助我们追踪用户的活动并维持用户的状态信息。会话技术主要包括两种方式:Cookie技术和Session技术。...

    session+cookie自动登录代码

    本次分析的案例通过JavaWeb技术实现了基于session和cookie的自动登录功能。该方法既简洁又考虑了基本的安全性需求。 #### 二、Session与Cookie基础知识回顾 1. **Session**: - Session是服务器端用于跟踪用户会话...

    IE的cookie机制导致的session问题及解决办法.doc

    标题与描述概述的知识点主要集中在Internet Explorer(IE)的Cookie机制如何引发Session丢失的问题,并探讨了解决方案。本文将深入解析这一现象的原因、影响以及如何有效应对。 ### 一、IE Cookie机制与Session关联...

    NET的csharp的session丢失sessionid不一样

    - 在`Global.asax`文件中添加`Session_Start`和`Session_End`事件处理器可以有效地跟踪Session的状态变化。 ```csharp protected void Session_Start(Object sender, EventArgs e) { // Code that runs when a ...

    cookie_demo.zip

    **会话 Session 与 Cookie:概述** 在Web开发中,会话管理和用户状态跟踪是至关重要的。`cookie_demo.zip`中的示例可能包含一个演示如何使用Cookie进行会话管理的项目。在这里,我们将深入探讨Cookie和Session的...

    javaWeb_Session(实现用户一段时间自动登录)

    **一、Session概述** Session是HTTP协议无状态特性的补充,因为在HTTP协议中,每次请求都是独立的,服务器无法识别客户端的连续请求是否来自同一用户。为了解决这个问题,服务器端创建了一个称为Session的数据结构...

    application与session的区别

    #### Session概述 Session是Web应用程序中用于跟踪用户会话的一种机制。由于HTTP协议本身是无状态的(即服务器无法记住客户端之间请求的状态信息),因此需要一种方法来保存用户的特定信息以便在多个页面请求间共享...

    Session用法

    #### 一、Session概述 1. **基本概念**: - **定义**:Session是服务器为特定用户分配的一段内存空间,用来存储该用户的信息。这些信息可以是用户登录的状态、购物车中的商品等。 - **作用**:实现跨页面的数据...

    cookie 详解

    - **何时使用Session**:对于涉及敏感信息的应用,如电子商务平台、银行应用等,应优先考虑使用Session来存储用户认证信息和关键数据。 ##### 3.2 使用场景的选择 - **不能使用Cookie的情况**:当用户的浏览器...

Global site tag (gtag.js) - Google Analytics