Servlet能读到JSessionID,读不到其它cookie问题
今天测试设置和获取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的值;
本文转载于:http://www.blogjava.net/simon1006/archive/2009/09/07/294210.html
Servlet能读到JSessionID,读不到其它cookie问题的更多相关文章
- 初谈SQL Server逻辑读、物理读、预读
前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...
- ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析
在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get).当前模式读(DB Block Gets)等诸多概念,如果 ...
- SQL Server逻辑读、预读和物理读
SQL Server数据存储的形式 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存 ...
- SQL Server 中的逻辑读与物理读
首先要理解逻辑读和物理读: 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读 ...
- SQL SERVER中的逻辑读,预读和物理读
sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树 但是每 ...
- 初谈SQL Server逻辑读、物理读、预读【转】
前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...
- mysql并发控制之快照读和当前读
上一篇简单的介绍了下MVCC(多版本并发控制)的原理,MVCC会对事物内操作的数据做多版本控制,从而实现并发环境下事物对数据写操作的阻塞不影响读操作的性能.而这个多版本控制的实现是由undo log来 ...
- 【MySQL】当前读、快照读、MVCC
当前读: select...lock in share mode (共享读锁) select...for update update , delete , insert 当前读, 读取的是最新版本, ...
- sqlserver性能调优中的逻辑读,物理读,预读是什么意思
表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...
- 理解SQL SERVER中的逻辑读,预读和物理读
转自:https://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html 在我的上一篇关于SQL SERVER索引的博文,有圆友问道关于逻 ...
随机推荐
- c++学习笔记1(c++简介)
c++和c的不同: 1,c++是c的扩充. 2,在解决问题时思维方式的不同.(c++采用面向对象思维,c面向结构思维) 面向结构思维:将一个大程序拆分成一个个很小的结构.每个结构完成一个或多个功能,所 ...
- a标签根据js返回值判断页面是否跳转
a标签再跳转之前先判断是否符合条件,符合可以跳转,不符合不可以跳转. 自己遇到的问题是:在js方法中根据条件就return结果,但是不行. 原因是:在js方法中return后不会结束整个js方法(ac ...
- angular中的orderBy过滤器使用
一 orderBy过滤器 AngularJS中orderBy进行排序,第一个参数可以有三种类型,分别为:function,string,array: 第一种:function,如果是func ...
- 关闭一个winform窗体刷新另外一个
例如Form1是你的主窗体,然后Form2是你的要关闭那个窗体,在Form1中SHOW FORM2的窗体那里加上一句f2.FormClosed += new FormClosedEventHandle ...
- Asp.net自带导出方法
///datatable数据源 filename绝对路径 如:E:\\***.xls DataTable.WriteXml(fileName)
- js实现浏览器兼容复制功能
经常看到这样一种效果:就是单击一个按钮,就将某个区域内的内容,复制到了剪切板中.其实这个功能实现起来也不难,核心就是用到了window子对象clipboardData的一个方法:setData()语法 ...
- 当在Win8下安装msi类型的文件出现errorcode 2503的解决方法
Win8安装程序出现2502.2503错误解决方法 在Win8中,在安装msi安装包的时候常常会出现代码为2502.2503的错误.其实这种错误是由于安装权限不足造成的,可以这种msi的安装包不像其他 ...
- Intellij IDEA 14的注册码
IntelliJ IDEA 14 注册码 IntelliJ IDEA 14 下载地址: IntelliJ IDEA 14 下载 分享几个license: (1) key:IDEA value:6115 ...
- Python的传值和传址与copy和deepcopy
1.传值和传址 传值就是传入一个参数的值,传址就是传入一个参数的地址,也就是内存的地址(相当于指针).他们的区别是如果函数里面对传入的参数重新赋值,函数外的全局变量是否相应改变,用传值传入的参数是不会 ...
- mysql查看表结构命令
mysql查看表结构命令 mysql查看表结构命令,如下: desc 表名;show columns from 表名;describe 表名;show create table 表名; use inf ...