Servlet的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的值;

时间: 2024-11-03 21:21:51

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

Servlet中保存的cookie值读取不到

在设计登录时记住密码功能时,很多时候回使用cookie,在Servlet中保存cookie时,再次访问登录页面,没有读取到保存的cookie值,代码如下: 1 Cookie idCookie = new Cookie("id",String.valueOf(user.getId())); 2 Cookie nameCookie = new Cookie("username",URLEncoder.encode(user.getName(), "utf-8&

Jquery操作Cookie,保存商品ID值至本地文件中

1.什么是Cookie? cookie 小甜饼?呵呵! 想吃了吧!Cookie就是服务器存本地的一个文件,可以在服务器上创建,也可以在客户端创建.主要是用来存储用户的一些记录,比如浏览过的商品等.目前Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名.密码了--当然这种方便也存在用户信息泄密的问题,尤其在多个用户共用一台电脑时很容易出现这样的问题. 说就真心话,Cookie不安全!使用者慎重!央视3.15已经有报道过相关信息,很多不好商家,第三方网站上植入带有获

js获取cookie值

js获取cookie值,代码如下: 1 function getCookie(key) { 2 var arr = document.cookie.split(';'); 3 var obj = new Object(); 4 for(var i = 0; i < arr.length; i++) { 5 var tmp = arr[i].split('='); 6 obj[tmp[0]] = tmp[1]; 7 } 8 return obj[key]; 9 } 调用: 1 alert(getC

cookie值添加获取

比如建立一个名为aspcn,值为灌水小鱼的cookie HttpCookie cookie = new HttpCookie["aspcn"];cookie.Value = "灌水小鱼";Response.AppendCookie(cookie); 取出Cookie值也很简单 HttpCookie cookie = Request.Cookies["aspcn"];cookieValue = cookie.Value; 在一个Cookie中储存多

Servlet之Cookie技术

前言:我们可以知道,由于Http的无状态性,也就是说当用户发送一次请求给服务器之后,服务器响应客户端的请求,当同一个客户端再次发送请求给服务器时,服务器并不知道这个请求是同一个客户端发送的.由此产生了Session追踪技术来保持状态,总共四个保持状态的方法:网址重写(URL传参),隐藏域(表单提交),cookie技术,session技术.今天来提一下第三种cookie技术. 一.cookie简介 cookie是自动地在Web服务器和客户端之间传递的一小块信息,并存放在客户端所在的硬盘上,适用于需

【学习】013 Servlet、Cookie、Session的简述

Servlet核心内容 Sevlet的生命周期(重点) Servlet重要的四个生命周期方法 构造方法: 创建servlet对象的时候调用.默认情况下,第一次访问servlet的时候创建servlet对象只调用1次.证明servlet对象在tomcat是单实例的. init方法: 创建完servlet对象的时候调用.只调用1次. service方法: 每次发出请求时调用.调用n次. destroy方法: 销毁servlet对象的时候调用.停止服务器或者重新部署web应用时销毁servlet对象.

5.Servlet的Cookie和Session

一.会话 两种技术: Cookie:客户端技术 Session:服务器技术 常见应用:网站登录之后下一次就可以不再登录. 1.Cookie 使用步骤: 服务器从客户端获取cookie信息 服务器设置cookie信息返回给客户端 Cookie案例:服务器获取并设置cookie 1 public class CookieDemo01 extends HttpServlet { 2 3 @Override 4 protected void doGet(HttpServletRequest req, H

servlet和Cookie实现记住账号密码功能

1.实现jQuery异步登录 https://www.cnblogs.com/YorkZhangYang/p/12539726.html 2.jQuery获取checkbox选项组的值 https://www.cnblogs.com/YorkZhangYang/p/12587155.html 2.1在1和2的基础上,Login.jsp页面按钮提交事件submitBtn.onclick=function(){}中增加以下代码 //获取checkbox是否已选中 let chkbox = $("in

cookie的设置和获取

1.Cookie设置 每个cookie都是一个名/值对(key=value)格式的字符串 例如: document.cookie="user1=YY"; 如果要改变一个cookie的值,只需重新赋值 例如: document.cookie="user1=QQ"; 封装获取cookie的函数 function setCookie(user,value,day){ var dates=new Date(); dates.setDate(dates.getDate()+d