在开发网站应用程序的过程中,使用cookie记录用户的一些信息是比较常用的一种方法,而cookie的使用也非常简单。
一、Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的
例如:
Cookie userCookie = new Cookie("user", "admin");
response.addCookie(userCookie);
和设置有关系的还有以下两个重要方法
1.setMaxAge
设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。
注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。
2.setPath
设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(jsp(SUN企业级应用的首选)页面或者Servlet的映射)所在目录及其子目录下的所有页面。
注意:
A:所有的cookie都是有路径的
B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录
C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而后者则不可以。
D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下(setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下。
这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp(SUN企业级应用的首选)和getcookie.jsp(SUN企业级应用的首选)、在web2下有getcookie.jsp(SUN企业级应用的首选)
web1下的setcookie.jsp(SUN企业级应用的首选)
<%
Cookie userCookie = new Cookie("user", "admin");
userCookie.setMaxAge(24*60*60);
userCookie.setPath("/web2/");
response.addCookie(userCookie);
%>
web1下的getcookie.jsp(SUN企业级应用的首选)
<%
Cookie[] cookie = request.getCookies();
String user = new String();
if ( cookie != null ) {
for (int i = 0; i < cookie.length; i++) {
Cookie myCookie = cookie[i];
if (myCookie.getName().equals("user")) {
user = myCookie.getValue();
}
}
}
out.println("user = " + user);
%>
web2下的getcookie.jsp(SUN企业级应用的首选)
<%
Cookie[] cookie = request.getCookies();
String user = new String();
if ( cookie != null ) {
for (int i = 0; i < cookie.length; i++) {
Cookie myCookie = cookie[i];
if (myCookie.getName().equals("user")) {
user = myCookie.getValue();
}
}
}
out.println("user = " + user);
%>
先访问web1下的setcookie.jsp(SUN企业级应用的首选),然后分别访问web1和web2下面的getcookie.jsp(SUN企业级应用的首选)文件,你会发现奇怪的现象,web1下的getcookie.jsp(SUN企业级应用的首选)中user为空而web2下的getcookie.jsp(SUN企业级应用的首选)中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
3、跨域共享cookie的方法:设置
cookie.setDomain(".jszx.com");
A机所在的域:home.langchao.com,A有应用cas
B机所在的域:jszx.com,B有应用webapp_b
1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。
2)这个参数必须以“.”开始。
3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。
4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。
二、读取
从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。
注意:若jsp(SUN企业级应用的首选)和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;
三、说明
我们知道,对于一个页面中的request和response,是一次http请求产生的,request是http请求中的所有参数,因此包含了发出这次http请求时cookie的值,而response是对于这次http请求webapplication产生的反应,所以它可以写cookie的值,这样看来,request得到的cookie的值,和response要写的cookie的值可以说是完全不同的。
简单地说request得到的cookie的值是在这次http请求之前的cookie的值,而response要写得值是这次http请求之后的cookie的值。所以,在同一个request和response中,如果response中增加了新的cookie,request中并不能得到。
分享到:
相关推荐
Cookie使用工具类是程序员为了方便地管理、创建和操作Cookie而编写的辅助类。这些工具类通常封装了与Cookie相关的复杂操作,使得代码更加简洁易读。本文将深入探讨Cookie的基本概念、用途以及如何使用`CookieUtil`...
### Cookie使用详解 #### 一、什么是Cookies? Cookies是一种由Netscape开发的工具,用于在用户的硬盘上存储信息,以便Web服务器能够识别特定的用户。由于HTTP协议本身是无状态的,即每次请求和响应都是独立的,...
### jQuery.cookie 使用方法详解 #### 一、简介 jQuery.cookie 是一个轻量级的 jQuery 插件,专门用于处理浏览器中的 Cookie。它提供了一种简便的方式来读取、写入及删除 Cookie,使得开发者无需手动编写复杂的 ...
ASP.NET 中的 Cookie 使用介绍 ASP.NET 是一个基于Microsoft .NET Framework 的 Web 应用程序框架,它提供了一种强大和灵活的方式来构建Web 应用程序。在 ASP.NET 中,Cookie 是一种常用的会话跟踪机制,允许开发者...
总结来说,Cookie适合存储少量、短期、需要在服务器端访问的数据,而localStorage则适用于存储大量、长期、仅客户端使用的数据。在实际应用中,开发者可以根据需求选择合适的存储方案。对于学习和实践,"CookieTest...
cookie使用方法
本文将深入探讨如何在ASP.NET中使用Cookie来实现题目所述的功能。 首先,我们需要理解Cookie的工作原理。Cookie是由服务器发送到浏览器的一小段文本信息,浏览器在后续的请求中会自动将其回传给服务器。它们通常...
这篇教程将深入探讨在IIS(Internet Information Services)和Apache两种不同的Web服务器环境下,如何使用JavaScript来操作Cookie。 **一、Cookie的基本概念** Cookie是由服务器端创建,并发送到客户端浏览器的一...
1.1.2 使用`header()`设置Cookie ```php header("Set-Cookie: name=$value[path=$path[;domain=xxx.com[; ]]"); ``` 这里的参数与`setcookie()`函数相同。 1.2 读取Cookie 使用PHP内置的超全局变量`$_COOKIE`可直接...
本文将深入探讨JavaScript和JSP中如何操作Cookie,以及涉及的超时设置和跨文件夹使用。 一、Cookie的基本概念 Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,当客户端再次请求同一服务器时,会将...
桂林老兵Cookie欺骗工具是一款在IT安全领域中被广泛讨论...总的来说,桂林老兵Cookie欺骗工具为网络安全专业人员提供了一个实验和学习Cookie欺骗技术的平台,但使用时应谨慎,合理运用这些知识来提升网络环境的安全性。
**JavaScript Cookie 使用详解** 在Web开发中,JavaScript的全局变量在不同页面间通常是无法共享的,但是有一种机制——Cookie,可以实现跨页面的全局数据存储。Cookie是由浏览器提供的功能,它允许JavaScript通过`...
Java 操作 Cookie Java 操作 Cookie 是一种常用的 Web 开发技术,用于在服务器端和客户端之间交换数据。Cookie 是一种小文本文件,存储在客户端浏览器中,用于记录用户的行为和偏好。下面我们将详细介绍 Java 操作 ...
下面是一个简单的Cookie使用示例: ```jsp ; charset=UTF-8" %> // 创建Cookie对象 Cookie cookie = new Cookie("username", "John Doe"); // 设置Cookie的生命周期,单位为秒 cookie.setMaxAge(3600); // 1...
使用 `$.cookie()` 方法可以轻松地设置 Cookie。此方法接受多个参数来定制 Cookie 的行为: - **第一个参数**:表示 Cookie 的名称。 - **第二个参数**:表示 Cookie 的值。 - **第三个参数**:可选对象,用于...
在Java编程语言中,Cookie是一种小型文本文件,用于在客户端和服务器之间传递信息,特别是保持用户状态和会话。本文将深入讲解Java中Cookie的使用方法,...在实践中不断探索,你将更加熟练地掌握Java中的Cookie使用。
使用jQuery Cookie创建一个Cookie非常直观,只需调用`.cookie()`方法并传入两个参数:Cookie的名称和值。例如,创建一个名为"user"的Cookie: ```javascript $.cookie('user', 'John Doe'); ``` ### 3. 读取Cookie...
在探讨PHP中的Cookie使用之前,我们首先需要明确什么是Cookie。Cookie是一种让服务器能够存储并稍后读取的小型文本文件,通常用于跟踪用户状态。它是在1994年由Netscape Navigator的开发者Lou Montulli发明的,并...
新建Cookie使用`jQuery.cookie`方法,接受两个参数:cookie的名称和值。例如,创建一个名为`myCookie`的Cookie: ```javascript $.cookie('myCookie', 'cookieValue'); ``` 还可以添加其他选项,如有效期(days)...