`

cookie介绍

阅读更多

由于要做一个简单的SSO,所以学习了cookie部分,原来感觉Cookie很简单,无非就是将cookie写入response,再从request中读出来,作DEMO练习了一下,发现有好多细节得注意。

 

大体思路:写两个servlet,一个写入cookie,一个读出cookie,看到很多人用以下代码:

response.addCookie(cookie);
 javax.servlet.http.Cookie[] diskCookies = request.getCookies();	 
		  for(int i=0;i<diskCookies.length;i++){
			  Cookie cookie=diskCookies[i];
			  System.out.println( "cookie[0].getName()== "+cookie.getName()); 
	          System.out.println( "cookie[0].getValue()== "+cookie.getValue()); 
	          System.out.println( "cookie[0].getDomain() "+cookie.getDomain());
			  
		  }

 

也就是在写入cookie后马上读取,进行测试,当然读不到,因为request内容没有刷新,要读到也是历史内容,所以还是使用response.sendRedirect("ReadCookie");转到下一个servlet进行测试吧,另外,网上有简单的cookie查看工具,还蛮好用,在附件中可以下载。

 

好了,开始看代码:

1、写cookie的servlet

package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*@author:duanqf*/
public class TestCookie extends HttpServlet {
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 如果不设置域,cookie不会写入
		// 如果设为localhost也不会写入
		// cookie.setDomain("localhost");
		// 设置域为IP时,写入IP的域中,利用http://172.20.40.73:8088/SSOAuth/TestCookie访问可以读出
		// 利用http://localhost:8088/SSOAuth/TestCookie访问读不出来。
		Cookie cookie = new Cookie("duanqftest", "22222");
		cookie.setDomain("172.20.40.73");
		cookie.setMaxAge(60000);
		cookie.setPath("/");
		response.addCookie(cookie);
		javax.servlet.http.Cookie[] diskCookies = request.getCookies();
		response.sendRedirect("ReadCookie");

	}
}

 2、读出cookie的代码

package test;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*@author:duanqf*/
public class ReadCookie extends HttpServlet{
	  protected void doGet(HttpServletRequest request, HttpServletResponse response){
		  javax.servlet.http.Cookie[] diskCookies = request.getCookies();	 
		  for(int i=0;i<diskCookies.length;i++){
			  Cookie cookie=diskCookies[i];
			  System.out.println( "cookie[0].getName()== "+cookie.getName()); 
	          System.out.println( "cookie[0].getValue()== "+cookie.getValue()); 
	          System.out.println( "cookie[0].getDomain() "+cookie.getDomain());
			  
		  }
	  }
}

 

javax.servlet.http.Cookie有两个比较重要的方法:setDomain()、setPath()

 

正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。

 
1.可在同一应用服务器内共享方法:设置cookie.setPath("/");
本机tomcat/webapp下面有两个应用:webapp_a和webapp_b,
1)原来在webapp_a下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。


2)若在webapp_a下面设置cookie的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/");

就可以在webapp_b下面获取到cas设置的cookie了。


3)此处的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享cookie,而cookie.setPath("/webapp_b/");

是指cas应用设置的cookie只能在webapp_b应用下的获得,即便是产生这个cookie的webapp_a应用也不可以。


4)设置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的时候,只有在webapp_b/jsp下面可以获得cookie,在webapp_b下面但是在jsp文件夹外的都不能获得cookie。

 
5)设置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用cookie,这样就不可以在产生cookie的应用webapp_a下面获取cookie了


6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。

 

2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");


A机所在的域:home.langchao.com,A有应用webapp_a
B机所在的域:jszx.com,B有应用webapp_b
1)在webapp_a下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。


2)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取webapp_a在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。

 
3)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享

 

 

疑问: 为什么我写cookie设置的城都是localhost,URL里也用localhost, 但是cookie写不进去??当然,也读不出来了。测试环境TOMCAT5.5 IE6.0

 

分享到:
评论
5 楼 darklipeng 2011-11-19  
谢谢博主了
4 楼 pop1030123 2011-03-28  
写得很好!东西也很好,不过只能看IE浏览器里的。
还有为什么cookie.setDomain("localhost");就是设置不进去呢?没有效果呢?
3 楼 yidej 2010-01-11  
不错,总结的很好!3Q
2 楼 zhouzhichu 2009-10-18  
1:设置本机的hosts文件,将rw.kdsw.cn映射成127.0.0.1,测试时全部访问网站rw.kdsw.cn,这样访问的时候就能带上正确的cookie信息了。
2:用ip即可,或者127.0.0.1
1 楼 zhouzhichu 2009-10-18  
多谢,比我总结的还仔细

相关推荐

    Cookie介绍ppt

    ### Cookie介绍及应用 #### 一、Cookie的基本概念与作用 **Cookie** 是一种轻量级的数据存储技术,主要用于在用户的计算机上存储少量信息。它由服务器生成,并发送到用户的浏览器,然后浏览器会将该信息存储在本地...

    黑马程序员_PHP_课程同步笔记day39:cookie介绍 .docx

    【PHP课程同步笔记day39:Cookie介绍】 在Web开发中,为了跟踪用户在整个会话中的行为,常常需要用到会话跟踪技术。常见的两种方法是Cookie和Session。Cookie是在客户端存储信息来标识用户身份,而Session则是在...

    cookie介绍.doc

    【Java Cookie】 Cookie 是一种基于HTTP协议的客户端存储机制,用于在Web应用程序中实现会话跟踪和数据持久化。它的基本概念是服务器在客户端(通常是浏览器)存储一小段信息,然后在后续的请求中,客户端会将这些...

    JSP用户注册加信息显示COOKIE

    Cookie介绍 Cookie是服务器发送到用户浏览器并储存的一小块数据,可用于跟踪用户状态或记录用户偏好。在用户每次访问网站时,浏览器会将Cookie发送回服务器。 ### 4. 使用Cookie显示信息 - **设置Cookie**:在...

    第二节 XSS盗取cookie-01

    Cookie介绍 Cookie是Web服务器保存在用户浏览器(客户端)上的小文本文件,可以包含有关用户的信息。Cookie可以分为临时Cookie和持久Cookie。临时Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该...

    第十六节 Cookie注入-01

    1. Cookie 介绍:Cookie 是一种小型文本文件,用于存储用户信息,以便服务器在后续访问时能够识别用户的身份。Cookie 的主要功能是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留...

    PHP的Cookie技术介绍

    ### PHP的Cookie技术介绍 #### 一、Cookie概述 在探讨PHP中的Cookie使用之前,我们首先需要明确什么是Cookie。Cookie是一种让服务器能够存储并稍后读取的小型文本文件,通常用于跟踪用户状态。它是在1994年由...

    关于java应用cookie

    ### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 ...通过以上介绍,我们可以了解到Java中Cookie的基本使用方法以及相关的安全性和注意事项。这些知识点对于开发基于Java的Web应用程序非常重要。

    ASP.NET中cookie读写方法介绍

    ### ASP.NET中cookie读写方法介绍 在ASP.NET应用程序中,cookie是一种常用的数据存储机制,用于在客户端存储少量的信息。本文将详细介绍ASP.NET中cookie的读写方法,并通过实例演示如何实现这些操作。 #### 一、...

    jquery 设置cookie、删除cookie、获取cookie

    jQuery 提供了一个非常方便的方式来处理这些操作,本文将详细介绍如何利用 jQuery 和其插件来设置、获取及删除 Cookie。 #### 二、环境搭建 首先,确保您的项目环境中已经包含了 jQuery 库。可以使用 CDN 方式引入...

    Cookie的使用

    在Cookie介绍中 我们了解到Cookie是基于Set Cookie响应头和Cookie请求头工作的 服务器通过response对象的addHeader 方法将cookie发送给浏览器 然后浏览器通过Cookie请求头将cookie再送回服务器

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    #### 一、背景介绍 在网络应用中,为了提供便捷的用户体验,许多网站都提供了“记住我”的功能。这一功能可以让用户在下次访问时无需重新输入用户名和密码即可直接登录。实现这一功能的一种常见方法是通过在用户的...

    java 操作cookie

    下面我们将详细介绍 Java 操作 Cookie 的基础知识和操作。 一、建立 Cookie 在 Java 中建立 Cookie 非常简单,主要通过 HttpServletResponse 对象的 addCookie() 方法来实现。下面是一个简单的示例代码: ```java...

    Extjs 关于 cookie的操作

    ### Extjs 中关于 Cookie 的操作 #### 一、引言 在 Web 开发中,Cookie 是一种常用的数据...通过以上介绍,开发者应该能够熟练掌握在 Extjs 中如何利用 Cookie 进行数据的存储与读取,从而提高应用程序的用户体验。

    browser-cookie 获取浏览器cookie

    #### 二、功能介绍 1. **主要功能**: - 将浏览器使用的cookies加载到`cookiejar`对象中。 - 支持Python下载并获取与浏览器中看到相同的内容,无需重新登录。 - 目前支持Chrome和Firefox浏览器。 - cookies存储...

    Java 模拟cookie登陆简单操作示例

    在本文中,我们将介绍 Java 模拟 Cookie 登陆的简单操作,结合实例形式分析了 Java 模拟 Cookie 登陆的相关原理与基本实现技巧。本示例主要是为了演示如何使用 Java 语言模拟 Cookie 登陆,实现自动登陆的功能。 是...

    cookie

    标题中的“cookie”一词指的是Web...以上是关于Cookie技术的基本介绍,具体实现细节和使用技巧可能需要参考原文档或“cookie.jsp”文件的内容。对于开发者来说,理解和熟练使用Cookie是构建高效、安全的Web应用的基础。

    jquery-cookie(Jq取cookie必备).rar

    本文将详细介绍jQuery Cookie的使用方法及其在实际项目中的应用。 首先,我们来理解Cookie的基本概念。Cookie是由服务器发送到用户的浏览器并由浏览器保存的一小块数据,它可以包含文本信息,如用户名、会话ID等。...

    添加、修改、删除cookie

    本文将详细介绍如何使用C#进行Cookie的添加、修改和删除操作。 首先,我们创建一个名为`Cookie`的公共类,这个类封装了对Cookie的操作。在这个类中,有三个主要的方法:`setCookie`用于添加或更新Cookie,`...

    jsp中cookie操作

    ### JSP中的Cookie操作 在Web开发中,Cookie是一种...通过以上介绍,我们可以了解到在JSP中如何有效地利用Cookie来进行用户状态的管理和信息的持久化存储。这对于实现登录状态保持、个性化推荐等功能具有重要意义。

Global site tag (gtag.js) - Google Analytics