public class CookieUtils { public static final String USERNAME_COOKIE="USERNAME_COOKIE";
public static final String CART_COOKIE="CART_COOKIE"; public static String getAttribute(String key,HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(cookies==null)return null;
try{
for(int i = 0,j = cookies.length;i<j;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equals(key)){
return cookie.getValue();
}
}
}catch(Exception e){
return null;
}
return null;
} public static void setAttribute(String key,String value,int minite_age,String path,HttpServletResponse response){
if(value==null)return ;
Cookie cookie = new Cookie(key,value);
cookie.setMaxAge(minite_age);
cookie.setPath(ValidateUtils.validateNull(path)?"/":path);
response.addCookie(cookie);
}}//在action中间一个地方有Cookie
CookieUtils.setAttribute(CookieUtils.CART_COOKIE,System.currentTimeMillis()+"",2*7*DateUtils.ONE_DAY,"/",this.getResponse());

String cart_cookie=CookieUtils.getAttribute(CookieUtils.CART_COOKIE,this.getRequest());System.out.println("cart_cookie===="+cart_cookie);
//第一次运行action输出为null  按理说在Cookie set值 以后应该能马上get值  不知道为什么没有输出???
//第二次运行action输出才有值

解决方案 »

  1.   

    很正常。cookie设置只有在客户端浏览器更改后,浏览器再次连接到服务器后,服务器才能看到cookie值的变化。
      

  2.   

    也就是cookie值是在客户端浏览器储存和更改的。
      

  3.   

    怎么能这么用呢...
    cookie是放在response中存入客户端的没错,
    不过你想读取,就得客户端在请求时,request里有cookie的信息,显然你这个request不是设置cookie后请求的页面发送出来的,所以request里就没有你想要的cookie信息.
    你的流程是:
    页面请求(客)->response设置cookie,request取cookie(服)->页面写入cookie(客)->...
    正确的流程是:
    页面请求(客)->response设置cookie(服)->页面写入cookie,页面请求(客)->request取cookie(服)->...