今天测试设置和获取Cookie遇到了一点小问题,很奇怪的问题;
把J2ee服务部署在本地 8080端口;访问任何一个服务时,如果客户端没有cookie,则下发cookie,
 如果客户端已经有了该cookie的值就不下发,代码逻辑如下:
String uid="";
Cookie mycookies[] = request.getCookies();
 if (mycookies!= null) {
            for (int i = 0; i < mycookies.length; i++) {
                if ("uid".equalsIgnoreCase(mycookies[i].getName())) {
                    uid=mycookies[i].getValue();
                }
             }
        }
     if(!StringUtils.isNull(uid)){
      //do nothing
  }else{
  String host=request.getHeader("host");
 uid=UUID.create();
 Cookie  mycookie = new Cookie("uid",uid);
 mycookie.setDomain(host);
 mycookie.setMaxAge(93312000);//三年
 response.addCookie(mycookie);
}
System.out.println("uid is>"+uid);
1、访问:
   http://localhost:8080/
   以及内部的页面,打印uid的值是相同的;符合要求
2、访问:
  http://127.0.0.1:8080
  以及内部的页面, uid每次都获取得值都是不同的;
两者的区别仅仅的访问的方式不同,如果用ip访问
  Cookie mycookies[] = request.getCookies();中永远获取不到uid的值;
(80端口号除外)

查了浏览器的具体cookie值,发现
http://localhost:8080/ 访问的时候,cookie值放在localhost下,服务器自动生成的SESSIONID也是存放在localhost路径下。
http://127.0.0.1:8080/
访问的时候,cookie
uid值放在127.0.0.1:8080下,在127.0.0.1:8080下的cookie服务端的Servlet永远都获取不到;而服务器自动生成的SESSIONID则是在127.0.0.1下,与uid存放位置不同。

所以在服务端下发cookie的时候,
String host=request.getHeader("host");
需要修改为
if(host.indexOf(":")>-1){
      host=host.split(":")[0];
     }
或者放弃设置mycookie.setDomain(host);
这样cookie值也是保存在127.0.0.1下的,与端口号不关联
 当然是服务器已经有域名的就不会出现端口号下获取不到cookie的值;

详细介绍请查看全文:https://cnblogs.com/qianzf/

Servlet的Cookie值保存与获取的更多相关文章

  1. Jmeter中传递cookie值

    场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢? 在线程组下面之直接添加HTTP Cook ...

  2. Servlet中保存的cookie值读取不到

    在设计登录时记住密码功能时,很多时候回使用cookie,在Servlet中保存cookie时,再次访问登录页面,没有读取到保存的cookie值,代码如下: 1 Cookie idCookie = ne ...

  3. (转)用webbrowser做的网站登陆程序,如何获取cookie并且保存在程序中 (IE8有效) ,用途嘛,你懂的。

    今天帮朋友做了个工具,用webbrowser做的,用户使用用户名密码登陆网站后,需要在后台下载和分析一些页面. 分析页面使用的是htmlparser .net版 里面唯一需要解决的问题是,登陆后的co ...

  4. JS获取指定的cookie值

    cookie Name为TEST_COOKIE:用如下方法可以获取cookie值: document.cookie.replace(/(?:(?:^|.*;\s*)TEST_COOKIE\s*\=\s ...

  5. Vuex 页面刷新后store保存的数据会丢失 取cookie值

    在store.js中 export default new vuex.Store({ // 首先声明一个状态 state state:{ pcid: '', postList: [], } //更新状 ...

  6. Servlet/JSP-05 Cookie

    一. 问题? HTTP协议是一种无状态协议,服务器本身无法识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是独立的.现实业务中服务器有时候需要识别来自同一个浏览器的一系列请求,例如购物车,登录 ...

  7. 动手学servlet(四) cookie和session

    Cookie   cookie是保存在客户端的一个“键值对”,用来存储用户的一些信息 cookie的应用: -在电子商务会话中标识用户 -对网站进行定制,比如你经常浏览哪些内容,就展示哪些页面给你 - ...

  8. servlet(5) - Cookie和session - 小易Java笔记

    1.会话概述 (1)会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. (2)会话过程中的数据不宜保存在request和servle ...

  9. Java Web之Servlet及Cookie/Session

    Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...

随机推荐

  1. ajax方式表单拦截

    html <!DOCTYPE html> <html> <head> <title></title> <meta charset=&q ...

  2. Delphi 解析HTML

    uses mshtml; IHTMLEleMent.ID; IHTMLEleMent.tagName; IHTMLEleMent.title;elmt._className;elmt.getAttri ...

  3. 在 WampServer 上手工安装 PHP 的多个版本

    手工安装新版本的PHP,只需以下步骤: 下载要安装的PHP版本.既然是用WampServer,那当然是下载Window版本的ZIP包啦:http://windows.php.net.解压到 Wamp的 ...

  4. discuz 标签详解

    Discuz 模板标签说明 Discuz! 的模板采用近似 PHP 表达式的语法,基本都是可识别的HTML,但涉及到变量和动态内容时,基本形式下: <!-{ 代码内容 }-> 逻辑元素包围 ...

  5. air 桌面应用发布后可以删除的文件

    ****\Adobe AIR\Versions\1.0 下的文件夹Resources,可以整个删除 ***META-INF\AIR目录下的application.xml配置文件可修改initialWi ...

  6. 搭建turbine时 hystrix MaxConcurrentConnections reached 异常

    2017-03-28 10:04:47.438 ERROR 1035 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor : Co ...

  7. springMVC学习记录3-拦截器和文件上传

    拦截器和文件上传算是springmvc中比较高级一点的内容了吧,让我们一起看一下. 下面先说说拦截器.拦截器和过滤器有点像,都可以在请求被处理之前和请求被处理之到做一些额外的操作. 1. 实现Hand ...

  8. REST Client

    1.  为什么要使用REST Client 在实际企业开发过程中经常会有这样的需求: 1.我当前开发的这个系统是需要调用其他系统的接口,也就是我们需要频繁的测试接口,尝试不同的入参参数去查看返回结果, ...

  9. scala -- 层级

    层级 层级的顶端是Any 类,定义了如下方法 final def ==(that:Any):Boolean final def !=(that:Any):Boolean def equals(that ...

  10. zg项目 应用系统编码原则

    一.编码说明: 1.系统编码采用三码为原则,通常两码简称之. 1>.子系统或类型 2>.系统小分类 3>.系统大分类 如 IPMS领域业务群: DA 应用软件发展管理系统 DE公用副 ...