`
- 浏览:
8453 次
- 性别:
-
前两天看见有兄弟问cookie为什么删除不了,所以写了给小总结,希望对用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页面或者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和getcookie.jsp、在web2下有getcookie.jsp
web1下的setcookie.jsp
<%
Cookie userCookie = new Cookie("user", "admin");
userCookie.setMaxAge(24*60*60);
userCookie.setPath("/web2/");
response.addCookie(userCookie);
%>
web1下的getcookie.jsp
<%
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
<%
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,然后分别访问web1和web2下面的getcookie.jsp文件,你会发现奇怪的现象,web1下的getcookie.jsp中user为空而web2下的getcookie.jsp中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
二、读取
从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。
注意:若JSP和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
2. **浏览器存储Cookie:** 浏览器接收到这些Cookie后,会将它们保存在用户的计算机上(通常是`C:\Documents and Settings\[当前用户]\Cookies`目录下)。 3. **浏览器发送Cookie:** 当用户再次访问同一网站时,...
关于`document.cookie`的使用,这是一个在Web开发中极为关键的概念,主要用于客户端存储少量的数据,以便网站能够识别用户,提供个性化服务,或是保存用户的偏好设置等。以下将深入解析`document.cookie`的特性、...
默认情况下,Cookie只适用于当前页面所在的目录及其子目录。 - `setSecure(boolean flag)`:如果设置为true,Cookie将在HTTPS安全连接上传输,否则在HTTP上。 - `setValue(String newValue)`:设置Cookie的值。 - `...
- cookies存储在一个位于用户主目录下的SQLite数据库中。 2. **安装方法**: - 可以通过pip命令进行安装:`pip3 install browser-cookie3`。 3. **使用示例**: - **示例1:** 提取网页标题(不使用浏览器_...
- `Path`: 设置Cookie的有效路径,默认情况下,Cookie在整个网站内有效,但可以通过此属性限制其只在特定目录下可用。 - `Secure`: 如果设置为True,则只有通过HTTPS协议发送的请求才能访问该Cookie,提高安全性。 ...
总结,jQuery Cookie 插件通过提供简单易用的 API,使得在 JavaScript 和 jQuery 项目中处理 Cookie 变得轻而易举。它不仅方便了开发者,也为用户提供了更好的体验,确保了数据在浏览器端的有效管理和持久化存储。在...
- Cookie的路径用于设置能够读取Cookie的顶级目录。通常建议不要将路径设置为网站的根目录,以免引起不必要的冲突。 - 删除Cookie时,必须使用与创建Cookie时相同的参数,包括路径、域名等。 #### 五、示例代码 ...
总结,jQuery 1.4.2作为一款经典版本,提供了丰富的DOM操作和事件处理能力,而jQuery Cookie插件则弥补了JavaScript原生对Cookie操作的不足,两者结合,为开发者构建交互性强、用户体验优良的Web应用提供了便利。...
本文介绍了JavaScript中关于事件、cookie和定时任务的基础知识,这对于初学者来说是理解JavaScript和创建动态交互网页的重要一步。同时,了解如何处理JavaScript中的错误也对于提高网页的用户体验至关重要。通过上述...
3. **Path**: 指定Cookie的有效路径,通常设置为应用程序的根目录。 4. **Domain**: 设置Cookie的生效域名。 5. **Max-Age/Expires**: 指定Cookie的有效期,超过这个时间,Cookie将被删除。 6. **Secure**: 如果设置...
总结起来,"前端开源库-universal-cookie-koa"是`universal-cookie`和`Koa`的完美结合,为前端开发者提供了一种高效、一致的方式来处理服务器端和客户端的cookie。这个库简化了SSR中的状态管理,提高了开发效率,是...
通过一些专门的软件,比如Cookie Pal,我们可以查看更多关于Cookie的信息,包括`Server`、`Expires`、`Name`、`Value`等内容。其中,`Server`表示存储Cookie的网站,`Expires`记录了Cookie的有效期限,`Name`和`...
总结,本示例通过Servlet和Cookie展示了如何在Java Web应用中实现用户登录信息的持久化,以实现自动登录功能。同时,还涉及了数据库连接、JSP和Tomcat服务器的使用。在实际开发中,还需要考虑安全性、性能优化以及...
- 没有相对目录的概念,不论在哪一个目录下设置`setPath("/myWeb/")`,该Cookie都将关联到服务器的`myWeb`目录下。 #### 四、读取Cookie 读取Cookie是通过`HttpServletRequest`对象的`getCookies`方法实现的,该...
默认情况下,Cookie只在创建它的页面所在的目录及其子目录下有效。如果需要在网站的其他地方也能访问到Cookie,可以将`path`设置为"/",这样Cookie在整个站点内都有效。 总结,理解并熟练掌握Cookie的使用是Web开发...
同时,设置`Cookie`的路径,通常为应用程序的根目录,确保整个应用都能访问到这个`Cookie`。 5. **响应客户端**:将包含`Cookie`的响应发送回客户端(浏览器),浏览器会自动保存这个`Cookie`。 6. **自动登录**:当...
总结,jQuery Cookie.js插件以其简洁的API和强大的功能,使得在JavaScript中处理Cookie变得简单易行。无论是在小型项目还是大型应用中,都能发挥出高效、便捷的优势,帮助开发者快速实现与Cookie相关的功能。
- **Path**: 定义了 Cookie 在哪个 URL 路径下有效,默认情况下,Cookie 只在创建它的网页及其子目录下的网页中有效。 - **Domain**: 定义了 Cookie 在哪个域名下有效,如果指定了该属性,那么该 Cookie 将在指定的...
对于Session的性能优化,一种方法是将Session数据存储在数据库而非服务器的临时目录,这样可以提高查询效率和安全性。可以使用`session_save_path()`设置Session存储路径,或自定义存储处理器(如数据库)通过`...
总结,"jquery-cookie-master"项目为jQuery的Cookie管理提供了便利,无论是开发新功能还是维护现有应用,都能从中受益。掌握jQuery Cookie的使用,无疑将提升你在Web开发中的技能水平,使你能更灵活地应对各种存储...