`

Cookie和Session-----会话跟踪中的两个重要技术

    博客分类:
  • java
 
阅读更多
Cookie的工作原理:

Cookie是最常用的客户会话跟踪技术。Cookie是将会话数据保存在客户端来维护会话状态的一种方式。它是服务器发送给浏览器的体积很小的纯文本信息,用户以后在访问同一个Web服务器时,浏览器会把Cookie原样发送给服务器。通过这种方式,保存了用户的会话状态。

Cookie分为两类:持久的和暂时的。持久的Cookie会被存储在客户端文件中;暂时的Cookie存储在内存中,一旦浏览器关闭Cookie就消失了。一般来说,客户端浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4kb,因此Cookie不会占用太大的硬盘空间。虽然Cookie很好用而且持久性高,但是由于有些用户担心Cookie对个人隐私有威胁,会关闭Cookie。一旦这样,便无法利用Cookie来达到会话追踪的功能了。下面看看Cookie具体怎么使用:

SetCookies.java(写入)

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class SetCookies extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        Cookie c1 = new Cookie("password", "123");
        response.addCookie(c1);
        
        Cookie c2 = new Cookie("client_ip", request.getRemoteAddr());
        
        //设置cookie的生命周期为一个小时,单位为秒
        c2.setMaxAge(60*60);
        response.addCookie(c2);
        
        response.getWriter().println("SetCookies OK!");
    }
}
ShowCookies.java(读取)

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class ShowCookies extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        Cookie[] Cookies = request.getCookies();       
        for (int i=0; i<Cookies.length; i++) {
            Cookie c = Cookies[i];
            response.getWriter().println(c.getName() + ", " + c.getValue());
        }
    }
}
Session的工作原理:

HttpSession对象自动为开发者提供一个可以方便地存储会话信息的地方,HttpSession的会话机制是基于Cookie和URL重写(URL重写就是利用GET方法,在URL的尾部添加一些额外的参数来达到会话追踪的目的)技术,融合了这两种技术的优点。当客户端允许使用Cookie时,HttpSession对象使用Cookie进行会话追踪,如果客户端禁用Cookie,则选择使用URL重写。

session与Cookie一样拥有特定的生命周期。一个session可以利用isNew方法来得知是否为一个新的session。所谓“新”的session就是说,他已经被Server产生,但是Client尚未被告知。

一般来说,session在一段时间内没有起作用就会自动失效,也就是Server会自动控管session失效的时间,不过时间的长短通常因容器而异,也可以自己手动设定session的失效时间。下面看看session具体怎么使用:

SetSessionServlet.java(写入)

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class SetSessionServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        session.setAttribute("ip", request.getRemoteAddr());
        
        response.getWriter().println("SetSession OK!");
    }
}
ShowSessionServlet.java(读出)

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class ShowSessionServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        String ip = (String)session.getAttribute("ip");
        response.getWriter().println("ip=" + ip);
    }
}
分享到:
评论

相关推荐

    经典收藏Cookie和Session

    在Web开发中,为了维持用户的会话状态,通常有两种常用的技术:Cookie与Session。这两种技术各有特点,适用于不同的场景。 - **Cookie**: - **定义**:Cookie是一种存储在用户本地浏览器上的小型文本文件,主要...

    c#实现cookie和session的登陆实例

    在Web开发中,Cookie和Session是两种常见的用户身份验证机制,尤其在C#编程语言中,它们被广泛用于实现登录功能。本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和...

    会话技术 之 cookie , session.pdf

    会话技术主要涉及两个概念:Cookie和Session。会话指的是用户开启浏览器,访问网站,并且在不关闭浏览器的前提下,访问多个链接和资源的过程。会话技术的使用主要是为了解决HTTP协议无状态性的限制,即每次HTTP请求...

    cookie和session示例

    在Web开发中,Cookie和Session是两种非常重要的用户状态管理机制。它们被广泛用于跟踪用户的登录状态、个性化设置等,确保用户在不同页面之间切换时能够保持一致性体验。接下来,我们将详细探讨Cookie和Session的...

    asp.net-c#写的一个cookie和session登陆小实验

    在这个"asp.net-c#写的一个cookie和session登陆小实验"中,我们主要关注的是两种在Web开发中常用的用户状态管理技术:Cookie和Session。 Cookie是服务器在客户端(用户浏览器)上存储的小型文本文件。它包含了特定...

    flask、session、cookie解加密脚本

    在处理用户登录和会话管理时,`session`和`cookie`是两个核心概念。本文将深入探讨`Flask`中的`session`和`cookie`,以及如何对它们进行解密。 首先,`session`和`cookie`都是用于跟踪用户状态的方法。`cookie`通常...

    JAVA之cookie与session

    **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制采用了客户端保持状态的方案。这意味着用户的浏览器将存储特定的...

    Cookie&SessionJsp-授课

    在 JavaEE 的项目中,会话管理可以分为两类:客户端会话管理技术和服务端会话管理技术。客户端会话管理技术是指把要共享的数据保存到了客户端(也就是浏览器端),每次请求时,把会话信息带到服务器,从而实现多次...

    javaweb之cookie和session的应用

    在Java Web开发中,Cookie和Session是两种非常重要的会话管理技术,它们主要用于跟踪和管理用户的状态信息。本文将深入探讨Cookie和Session的工作原理、应用场景以及如何在Java Web项目中进行有效利用。 **Cookie**...

    JavaWeb基础-Cookie和Session的简单使用案例

    在JavaWeb开发中,Cookie和Session是两种常见的用户会话管理技术,用于在客户端和服务器之间传递信息。本文将深入探讨这两个概念,并通过一个简单的登录案例来阐述它们的使用。 首先,Cookie是服务器发送到用户...

    cookie 和 session 保存的异同

    Cookie 和 Session 是两种常见的用户身份验证和会话管理机制,它们在Web开发中扮演着重要角色,用于跟踪用户的在线状态和存储用户数据。下面将详细阐述它们的异同以及如何在集群环境中进行共享。 首先,Cookie 是一...

    SpringSession同时支持Cookie和header策略

    本文将深入探讨SpringSession如何支持Cookie和header策略,并解析`CookieHeaderHttpSessionStrategy.java`这个文件中的关键概念和技术细节。 首先,我们来看标题提及的“SpringSession同时支持Cookie和header策略”...

    day16_cookie&session源代码.zip

    在IT行业中,尤其是在Web开发领域,Cookie和Session是两种非常重要的技术,用于管理用户状态和保持会话。这里我们深入探讨这两个概念以及它们在Java Web中的应用。 首先,Cookie是客户端存储的小型文本文件,由...

    cookie和session的运用

    **Cookie** 和 **Session** 是两种用于跟踪用户会话的技术,在Web开发中非常常见。它们的主要功能是帮助服务器识别用户并维持用户的登录状态等信息。 ##### 1. Cookie - **定义**: Cookie是一种小型的数据文件,...

    spring security 3.x session-management 会话管理失效

    - 会话在Web应用中扮演着关键角色,它允许服务器存储和跟踪用户的状态。在Spring Security中,会话管理主要涉及到会话固定防护(Session Fixation Protection)和会话超时(Session Timeout)。 2. **会话固定防护...

    cookie机制和session机制的区别

    当服务器创建一个Session时,会生成一个Session ID并将其存储在Cookie中,这样每次用户发起请求时,服务器都能通过读取Cookie中的Session ID来恢复用户的会话状态。 然而,如果用户禁用了Cookie,或者由于某种原因...

    Cookie机制和Session机制

    ### Cookie机制和Session机制 #### 一、基本概念与背景 ...这两种机制各有优缺点,选择哪一种取决于具体的应用场景和技术需求。在实际开发中,开发者需要根据项目的需求灵活选择合适的状态管理方案。

    Cookie-Session机制详解.txt

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

    cookie-session, 基于简单cookie的会话中间件.zip

    cookie-session, 基于简单cookie的会话中间件 cookie会话 基于简单cookie的会话中间件。用户会话可以通过 Cookies 以两种主要方式存储: 在服务器上... 这个模块在cookie中存储会话数据,而像 express会话的模块在cook

Global site tag (gtag.js) - Google Analytics