您现在的位置是:主页 > news > 建筑类网站的推荐理由/永久免费进销存管理软件手机版

建筑类网站的推荐理由/永久免费进销存管理软件手机版

admin2025/6/4 2:17:24news

简介建筑类网站的推荐理由,永久免费进销存管理软件手机版,女性pose拍照,衡阳微信网站上一篇: 会话技术Cookie和Session详解. 本文目录1.Cookie共享问题1.1 同一个Tomcat服务器1.1.1 验证1.2 不同的Tomcat服务器1.Cookie共享问题 1.1 同一个Tomcat服务器 正常的cookie只能在一个应用中(简单理解,就是一个目录)共享&#xff0c…

建筑类网站的推荐理由,永久免费进销存管理软件手机版,女性pose拍照,衡阳微信网站上一篇: 会话技术Cookie和Session详解. 本文目录1.Cookie共享问题1.1 同一个Tomcat服务器1.1.1 验证1.2 不同的Tomcat服务器1.Cookie共享问题 1.1 同一个Tomcat服务器 正常的cookie只能在一个应用中(简单理解,就是一个目录)共享&#xff0c…

上一篇: 会话技术Cookie和Session详解.

本文目录

  • 1.Cookie共享问题
    • 1.1 同一个Tomcat服务器
      • 1.1.1 验证
    • 1.2 不同的Tomcat服务器

1.Cookie共享问题

1.1 同一个Tomcat服务器

  1. 正常的cookie只能在一个应用中(简单理解,就是一个目录)共享,即一个cookie只能由创建它的应用获得。默认情况下cookie不能被多个Web应用共享,
  2. 比如我的Tomcat/webapp下面有两个应用:Test1Test2,在Test1中创建自己应用的cookie,没有设置Path属性的情况下,那么在Test2下是肯定拿不到的。很容易忽视的一点:Cookie path默认是产生cookie的应用的路径。
  3. 如果Test2需要共享Test1中的cookie:就要用到Cookie类的setPath(String uri); 该方法的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如Tomcat下面的webapp)
  4. Test1设置cookie时,增加一条cookie.setPath("/");可以在webapp文件夹下的所有应用共享cookie
    或者cookie.setPath("/Test2"); 指Test1应用设置的cookie只能在Test2应用下的获得,即便是产生这个cookieTest1应用也不可以。
  5. 如果设置了cookie.setPath("/Test2/myinfo"); 只有在Test2/myinfo下面可以获得该cookie,在Test2下面但是在myinfo文件夹外的都不能获得cookie。非常严格。
  6. 那设置多条cookie.setPath("XXX");语句呢? 答案是最后一条语句才会起作用,符合了我们的经验。

1.1.1 验证

这个例子是用户第一次访问Tes1应用时,创建2个Cookie对象,cookie是用户第一次访问的时间,cookie1是上一次访问时间;用户再访问Tes1应用,读取两个cookie,页面显示出用户第一次访问的时间和上一次访问时间;
在这里插入图片描述
Test1代码:

package Test;import ...
rvlet(name = "Test.Test1", urlPatterns = "/Test.Test1")
public class Test1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//指定服务器的编码方式UTF-8,防止发生乱码response.setContentType("text/html;charset=utf-8");//用户第一次访问服务器的时间String firstAccessTime=null;//用户上一次访问服务器的时间String lastAccessTime = null;// 获取所有的cookie,并将这些cookie存放在数组中Cookie[] cookies = request.getCookies();// 遍历cookies数组for (int i = 0; cookies != null && i < cookies.length; i++) {if ("firstAccess".equals(cookies[i].getName())) {// 如果cookie的名称为firstAccess,则获取该cookie的值firstAccessTime = cookies[i].getValue();}if ("lastAccess".equals(cookies[i].getName())) {// 如果cookie的名称为lastAccess,则获取该cookie的值lastAccessTime = cookies[i].getValue();break;}}//判断是否存在名称为lastAccess的cookieif (lastAccessTime == null) {response.getWriter().print("您是首次访问本站!!!");String nowTime = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());Cookie cookie1 = new Cookie("firstAccess", nowTime);response.addCookie(cookie1);} else {response.getWriter().println("您上次的访问时间是: "+ lastAccessTime+"<br>");response.getWriter().println("您第一次访问时间是: "+ firstAccessTime+"<br>");}// 创建cookie,将当前时间作为cookie的值发送给客户端String currentTime = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());Cookie cookie = new Cookie("lastAccess", currentTime);//设置cookie最大存在时间cookie.setMaxAge(60*60); //以秒为单位,此处为3600秒// 发送 cookieresponse.addCookie(cookie);}
}

访问Test1:
在这里插入图片描述
再次访问:
在这里插入图片描述
查看Cookie:
在这里插入图片描述

修改上述代码:添加一条语句cookie1.setPath("/Test2");

if (lastAccessTime == null) {response.getWriter().print("您是首次访问本站!!!");String nowTime = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());Cookie cookie1 = new Cookie("firstAccess", nowTime);cookie1.setPath("/Test2");response.addCookie(cookie1);} else {response.getWriter().println("您上次的访问时间是: "+ lastAccessTime+"<br>");response.getWriter().println("您第一次访问时间是: "+ firstAccessTime+"<br>");}

在这里插入图片描述
在这里插入图片描述

Test2的代码:

package Test;import ...
rvlet(name = "Test2",urlPatterns = "/Test2")
public class Test2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//指定服务器的编码方式UTF-8,防止发生乱码response.setContentType("text/html;charset=utf-8");//用户第一次访问服务器的时间String firstAccessTime=null;// 获取所有的cookie,并将这些cookie存放在数组中Cookie[] cookies = request.getCookies();// 遍历cookies数组for (int i = 0; cookies != null && i < cookies.length; i++) {if ("firstAccess".equals(cookies[i].getName())) {// 如果cookie的名称为firstAccess,则获取该cookie的值firstAccessTime = cookies[i].getValue();break;}elsefirstAccessTime="没有找到访问时间";}response.getWriter().println("您第一次访问时间是: " + firstAccessTime+"<br>");}
}

修改Test1代码:cookie1.setPath("/");
访问Test1
在这里插入图片描述
查看Cookie

在这里插入图片描述
访问Test2
在这里插入图片描述

1.2 不同的Tomcat服务器

Domain表示的是cookie所在的域,默认为请求的地址,如网址为www.cjdx.net/test/test.aspx,那么Domain默认为www.cjdx.net。

  1. 跨域共享cookie的方法:用到setDomain(String path); 方法,该参数是的域名,如果一级域名相同,那么多个服务器之间cookie可以共享。
  2. 如果服务器A所在的域是:t1.test.com,A有一个Web应用Test1;
    服务器B所在的域是:t2.test.com,B有一个应用Test2。
  3. 那么在Test1中设置cookie时,使用语句cookie.setDomain(".test.com");,这样在Test2中就可以取到这个cookie,还可以在默认的t1.test.com下共享。注意这个参数必须以"."开始

欢迎点赞评论,指出不足,笔者由衷感谢哦!~