原文地址:http://shukuiyan.iteye.com/blog/1587075
1 什么是cookie
浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为“小甜饼”。cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段:Netscape Navigator使用一个名为cookies.txt本地文件保存从所有站点接收的Cookie信息;而IE浏览器把Cookie信息保存在类似于C:\windows\cookies的目录下。当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。
2 cookie的四个属性
max-age 指定Ccookie的生存周期(以秒为单位)!默认情况下,Cookie的值只在浏览器的会话期间存在,当用户退出浏览器这些值就消失了!
path 指定与Cookie关联在一起的网页.默认情况下,cookie会和创建它的网页以及与这个网页处于同一个目录下的网页和处于该目录下的子目录关联。
domain 设置访问域 举个例子:位于order.example.com的服务器要读取catalog.example.com设置的cookie.这里就要引入domain属性,假定由位于catalog.example.com的页面创 的cookie把自己的path属性设置为"/",把domain属性设置为".example.com",那么所有位于"catalog.example.com"的网页和所有位于"orders.example.com"的网页以及所有位于example.com域的其他服务器上得网页都能够访问这个cookie.如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的 服务器的主机名。 注意:不能将一个cookie的域设置成服务器所在的域之外的域.
seure 指定在网络上如何传输cookie的值
3 java Cookie操作
创建Cookie
// new一个Cookie对象,键值对为参数
Cookie cookie = new Cookie("key", "cookie的value值");
如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码,使用
URLEncoder.encode("cookie的value值","utf-8");
// 设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失
cookie.setMaxAge(*24*60*60); // 一天
// 将Cookie添加到Response中,使之生效
response.addCookie(cookie); //addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie
注意:在Struts中可以使用 ServletActionContext.getResponse()获得respone对象
读取cookie
读取Cookie只能从request中获取全部Cookie,然后循环迭代。
在Struts中可以使用 ServletActionContext.getRequest()获得request对象
// 从request中获取Cookie,拿到的是一个Cookie数组
Cookie[] cookies = request.getCookies();
// 然后迭代之
if (cookies != null && cookies.length > 0) { //如果没有设置过Cookie会返回null
for (Cookie cookie : cookies) {...}
}
删除cookie
删除Cookie的话,只需要将Cookie的生存期设为0即可
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
// 找到需要删除的Cookie
if (name.compareTo("target-key") == 0) {
// 设置生存期为0
cookie.setMaxAge(0);
// 设回Response中生效
response.addCookie(cookie);
}
}
}
4 cookie的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");语句的时候,起作用的以最后一条为准。
5 cookie.setDomain方法设计跨域共享
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下面共享
参考:
http://tujunlan.iteye.com/blog/938364
http://redstarofsleep.iteye.com/blog/1513716
http://www.blogjava.net/xzclog/archive/2011/10/03/359956.html
相关推荐
当客户端浏览器再次访问该网站时,会把Cookie信息一起发送到服务器端,这样服务器就可以根据Cookie中的信息进行个性化处理。 #### 二、Cookie的创建与使用 ##### 1. 创建Cookie对象 在Java中,创建Cookie非常简单...
在 Java 中建立 Cookie 非常简单,主要通过 HttpServletResponse 对象的 addCookie() 方法来实现。下面是一个简单的示例代码: ```java HttpServletResponse response; Cookie cookie = new Cookie("cookiename", ...
我们可以使用 Java 语言来发送 HTTP 请求,并将 Cookie 信息写入到 HTTP 头部中,以便模拟用户的登陆行为。 Java 模拟 Cookie 登陆的实现 下面是一个简单的 Java 模拟 Cookie 登陆的示例代码: ```java import ...
本文将深入讲解Java中Cookie的使用方法,包括创建、设置、读取和删除Cookie,以及其在Web应用程序中的作用。 1. **Cookie的基本概念** - **定义**:Cookie是服务器发送到用户浏览器并存储在本地的一小块数据,当...
1. **安全性**: 由于Cookie数据是存储在客户端的,因此需要注意保护敏感信息,避免将其存储在Cookie中。 2. **大小限制**: 浏览器对单个Cookie的大小有限制,通常不超过4KB。 3. **隐私问题**: 使用Cookie时应考虑...
在Java中,我们可以使用HttpServletResponse的`addCookie()`方法来设置Cookie。首先创建一个Cookie对象,通过构造函数传入键值对,例如`new Cookie("key", "value")`。然后设置Cookie的存活时间,`setMaxAge()`方法...
### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...
在Java中,我们可以使用Apache Commons Codec库生成随机字符串,然后将其与图片一起发送给用户。用户输入的验证码与服务器端保存的验证码匹配,验证通过则允许执行操作: ```java // 生成验证码 Random random = ...
#### 三、在JSP中使用Cookie 在Java Web应用中,特别是在JSP页面中,可以通过Java代码来创建和操作Cookie。下面介绍两种基本的操作:写入Cookie和读取Cookie。 1. **写入Cookie** ```java // 创建并设置Cookie ...
本示例将详细介绍如何在Java Servlet中使用Cookie。 首先,我们需要了解Cookie的基本概念。Cookie是由服务器发送到浏览器,并由浏览器存储的一小段文本信息。当浏览器发起新的请求时,它会自动将该域下的所有Cookie...
Java Servlet和Cookie是Web开发中的两个重要概念,它们在构建动态、交互式的Web应用程序中扮演着关键角色。本文将深入探讨这两个技术,并提供详细的实践应用示例。 **Java Servlet** Java Servlet是一种Java语言...
标题“Discuz与Java通过Cookie共享登录”涉及的是在Web开发中如何实现不同系统间用户登录状态的共享,特别是Discuz论坛系统与基于Java的应用之间的交互。Discuz是一款流行的开源社区论坛软件,而Java是一种广泛使用...
在Java编程中,Cookie是一种非常重要的技术,它...这个实例简单直观,适合初学者理解Cookie的工作原理以及如何在Java Web应用中使用它们。通过不断实践和深入学习,开发者可以掌握更多关于Cookie和Web开发的高级技巧。
在实际应用中,JS和Java Cookie结合使用可以实现更高级的功能。例如,服务器通过Java Cookie设置会话ID,然后在客户端通过JS读取Cookie,实现页面之间的状态保持。同时,正则表达式可用于处理和解析这些Cookie,以...
在Java中,我们主要使用`javax.servlet.http.Cookie`类来创建、读取和修改Cookie。以下是一些关键方法: 1. **创建Cookie**:通过`new Cookie(String name, String value)`创建一个新的Cookie对象,其中name为...
- **验证Token**:用户再次访问时,服务器读取Cookie中的Token,与数据库中的信息对比,验证通过则自动登录。 6. **注意事项** - 遵循最佳实践,限制Cookie的有效期,不要让其永久存在。 - 对于敏感信息,除了...
在Java中,可以使用HttpURLConnection或HttpClient库来构建这样的请求。例如,使用HttpURLConnection: ```java URL url = new URL("登录接口URL"); HttpURLConnection conn = (HttpURLConnection) url.open...
本篇文章将深入探讨如何使用Java访问.NET Web服务,并在过程中获取和设置Cookie,以便实现更高效、安全的会话管理。首先,让我们理解Web服务的基本概念。 Web服务是一种通过HTTP协议提供功能的方法,使得不同系统间...
java web cookie 详解
在上面的代码中,我们使用 HttpServletRequest 对象的 getCookie() 方法获取当前路径和直接父路径的所有 Cookie 对象,然后遍历该数组,找到名为 "key" 的 Cookie 对象,并将其值修改为 "newValue"。 实现两个网站...