<%
Cookie[] coo = request.getCookies(); for (int i = 0; i < coo.length; i++) {
String cc = coo[i].getValue();
System.out.println(request.getRemoteAddr() + ":"
+ coo[i].getValue());
out.println(coo[i].getValue());
out.println(coo[i].getMaxAge() + "\n");
} String name = request.getParameter("userName");
Cookie cookie = new Cookie("name", name);
cookie.setMaxAge(60 * 50);
response.addCookie(cookie);
out.println("write cookie");
%>
这是我的代码,在apache-tomcat-6.0.14 测试总是 getMaxAge 总是得到 -1,不明白是怎么回事,那们帮解释一下,谢谢了

解决方案 »

  1.   

    下面是我很久以前写的,不过保证可以使用,因为太久没用了,我看不出楼主的问题,楼主用我的试试.
    怀疑是没写path
    package com.syj.util;import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;/**
     * <p>
     * Title: Cookie工具类
     * </p>
     * 
     * @author 孙钰佳
     * @main [email protected]
     * @date May 4, 2008 8:45:43 PM
     */
    public class CookieUtil { public static String getCookieValue(Cookie[] cookies, String cookieName,
    String defaultValue) {
    if (null == cookies)
    return "";
    for (int i = 0, size = cookies.length; i < size; i++) {
    Cookie cookie = cookies[i];
    if (cookieName.equals(cookie.getName()))
    return cookie.getValue();
    }
    return defaultValue;
    } public static void setCookie(HttpServletResponse response,
    String cookieName, String cookieValue) {
    Cookie cookie = new Cookie(cookieName, cookieValue);
    cookie.setPath("/");
    response.addCookie(cookie);
    } public static void setCookie(HttpServletResponse response,
    String cookieName, String cookieValue, int cookieMaxage) {
    Cookie cookie = new Cookie(cookieName, cookieValue);
    cookie.setMaxAge(cookieMaxage);
    cookie.setPath("/");
    response.addCookie(cookie);
    } public static String getCookieValue(HttpServletRequest request,
    String cookieName, String defaultValue) {
    return getCookieValue(request.getCookies(), cookieName, defaultValue);
    } public static void delCookie(HttpServletResponse response, String cookieName) {
    Cookie delCookie = new Cookie(cookieName, null);
    delCookie.setMaxAge(0);
    delCookie.setPath("/");
    response.addCookie(delCookie);
    }
    }
      

  2.   

    把这个path加上看看:cookie.setPath("/"); 
      

  3.   

    lz其实是在for循环里少了Cookie cookie = cookies[i];这么一句
      

  4.   

    [接5楼]
    楼主是说你的那个名字为“name”的Cookie的getMaxAge()总是得到 -1 ?
    如果是别的Cookie还有可能。如果是这个Cookie的话,不太可能啊?你明明已经 setMaxAge(60 * 50); 了啊。解决方案:
    1、多刷新几次。
    2、换个浏览器查看结果。
    3、检查你的浏览器设置,是否禁用Cookie之类的?
      

  5.   

    没有吧,楼主用
    Cookie[] coo = request.getCookies(); 
    coo[i].getMaxAge() 
    是可以得到Cookie的
      

  6.   

    可以清空cookie后,手工保存cookie.用肉眼看看这样不是更好.呵呵.反正它就待在那个文件夹吗,看看有没有确定ie没有禁用先
      

  7.   


    我用了 FireFox 也不行,并且换了 服务器 glassfish 也不行