cookie的路径

news/2024/5/18 15:05:02 标签: cookie

------------------------------- cookie的路径-------------------------------------

Cookie的路径

Cookie还有一个path属性,可以通过Cookie#setPath(String)方法来设置。你可以使用HttpWatch查看响应中的Set-Cookie中是否存在路径。下面是通过FireFox查看Cookie信息。

 

也就是说,就算你不设置Cookie的path,Cookie也是有路径的。这个路径就是请求的路径。例如在请求http://localhost/day07_03/AServlet时,服务器响应了一个Cookie,那么这个Cookie的默认路径就是/day07_03/。

例如请求的路径是http://localhost/day07_03/servlet/BServlet时,服务器响应了一个Cookie,那么这个Cookie的默认路径就是/day07_03/servlet/

 

到现在我们还没说过Cookie的path有什么用,现在我们来聊聊path的作用。首先声明一点,path不是指Cookie在客户端存放的路径!!!不同的浏览器存放Cookie的路径是不同的!!!你不能通过Cookie的path来指定Cookie文件的存放路径!!!

那么Cookie的path是干什么的呢?假设你的浏览器当前已经有了两个Cookie:

  1. c1:name=id; value=itcast; path=/day07_03/;
  2. c2:name=name; value=qdmmy6; path=/day07_03/servlet/。

 

当访问http://localhost/day07_03/*时,请求头中会包含c1,而不会包含c2。

当访问http://localhost/day07_03/servlet/*时,请求头中会包含c1和c2。

也就是说,在访问子路径时,会包含其父路径的Cookie,而在访问父路径时,不包含子路径的Cookie。

 

如果你想在BServlet中设置的Cookie,在客户端访问AServlet时也包含在请求头中,那么就需要设置BServlet中的Cookie的path:

  1. c2.setPath(“/day07_03/”):硬编码;
  2. c2.setPath(request.getContextpath() + “/”):活编码。

 

这样就可以设置Cookie的路径,保存在访问AServlet时,也会包含BServlet中添加的Cookie。

 

Cookie的SetPath设置cookie的路径,这个路径直接决定服务器的请求是否会从浏览器中加载某些cookie

首先默认情况如果不设置cookie的path,默认是 /项目名称/当前路径的上一层地址如:请求路径:/cookie_demo/servlet/login, cookie的路径:/cookie_demo/servlet

如果我们设置path,如果当前访问的路径包含了cookie的路径(当前访问路径在cookie路径基础上要比cookie的范围小)cookie就会加载到request对象之中。

 

代码示例:

public class RegistServlet extends HttpServlet {

      

       @Override

       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

              doPost(req, resp);

       }

 

       public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              request.setCharacterEncoding("UTF-8");

              //获取用户名和密码

              String username = request.getParameter("username");

              String password = request.getParameter("password");

             

              username = "likunpeng";

              password = "123";

             

              System.out.println("用户名:"+username);

              System.out.println("密码:"+password);

             

              //创建3个cookie对象,将用户名和密码连接存储,使用逗号分开

              Cookie cookie = new Cookie("userpass", username+","+password);

              Cookie cookie1 = new Cookie("userpass", username+"1,"+password);

              Cookie cookie2 = new Cookie("userpass", username+"2,"+password);

             

              //设置cookie的存活时间

              cookie.setMaxAge(60*10);

              cookie1.setMaxAge(60*10);

              cookie2.setMaxAge(60*10);

             

              //设置cookie的path路径

              cookie.setPath("/cookie_demo3/");

              cookie1.setPath("/cookie_demo3/a/");

              cookie2.setPath("/cookie_demo3/a/b/");

             

              //把cookie写入浏览器

              response.addCookie(cookie);

              response.addCookie(cookie1);

              response.addCookie(cookie2);

             

              response.getWriter().print("<h1>success</h1>");

       }

 

}

 


http://www.niftyadmin.cn/n/1564418.html

相关文章

(八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据

&#xff08;八大方法、逐层深入&#xff0c;有你一定没见过的&#xff09;使用INSERT语句向表中插入数据&#xff08;MSSQLSERVER版&#xff09;做开发的同仁对于向数据库中插入数据可谓是太普通不过了&#xff0c;也没什么说的&#xff0c;一般都是采用常用的INSERT INTO [(字…

CentOS下安装JDK的三种方法

由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装:方法一&#xff1a;手动解压JDK的压缩包&#xff0c;然后设置环境变量1.在/usr/目录下创建java目录[rootlocalhost ~]# mkdir/usr/java [rootlocalhost ~]# cd /usr/j…

cookie中保存中文

-------------------------------- cookie中保存中文-------------------------------- Cookie中保存中文 Cookie中保存中文&#xff0c;次要。 Cookie中是不可以设置中文的&#xff0c;但可以使用URLEncodor.encode()方法编码后在存放到Cookie中。在获取Cookie时&#xff0c…

Windows Phone实用开发技巧(37):创建一个全局播放器

在做windows phone 开发的时候&#xff0c;有时候我们需要在某些页面中进行声音的播放。而播放的方式也有多种&#xff1a; 1. 使用MediaElement 2. 使用SoundEffect 3. 使用后台播放 SoundEffect只能播放wav格式的文件&#xff1b;后台播放可以在程序退出后仍然继续播放&#…

cookie的禁用

------------------------------- cookie的禁用------------------------------------- Cookie的禁用处理 默认情况下浏览器的cookie是被启用的&#xff0c;但是其实我们是可以手动的禁用cookie的&#xff0c;强烈不建议禁用cookie Cookie一旦被禁用掉绝大多数互联网的网站都…

win7 命令行 utf-8 汉字乱码

为什么80%的码农都做不了架构师&#xff1f;>>> 以前用命令行的时候也经常遇到这个问题&#xff0c;貌似从没想过纠正一下&#xff0c;看到第九街上的这篇文章特别收藏一下。 在dos下执行一个PHP文件的时候&#xff0c;由于输出文件文字是UTF8编码&#xff0c;所以…

JSP的概述

---------------------------JSP的概述------------------------------------------ JSP概述 JavaWeb早期&#xff1a;applet servlet JavaWeb早期&#xff1a;servlet&#xff0c;在servlet中需要写大量的response.getWriter().println(“<html>”); JavaWeb后期&am…

JSP的scriptlet

----------------------------------- JSP的scriptlet------------------------------- JSP的scriptlet 从单词上分析script是脚本&#xff1a;let在JAVA中表示的小程序&#xff0c;scriptlet表示脚本小程序。 JSP中的Java代码块就是最常见的动态信息。它分为三种&#xff1a;…