static public void setHttpCookie(HttpServletResponse response, String payload) { Cookie c = new Cookie(COOKIE_NAME, payload); c.setMaxAge(60*86400); // expire sixty days in the future c.setPath("/"); // this cookie is good everywhere on the site response.addCookie(c); } static public String checkForCookie(HttpServletRequest req) { Cookie[] cookies = req.getCookies(); if ( cookies != null ) { for ( Cookie c : cookies ) { if ( COOKIE_NAME.equals(c.getName()) ) { int maxAge = c.getMaxAge(); logger.debug("Read back cookie and it had maxAge of {}.", maxAge); String payload = c.getValue(); return payload; } } } return null; }
浏览器不发送cookie属性,比如路径和年龄。它只返回名称和值。如果max过期了,浏览器就不会发送cookie了。如果浏览器路径没有被新URI覆盖,那么浏览器无论如何也不会发送cookie。如果你真的需要在设置cookie之后确定cookie的年龄,那么在你设置cookie时,你应该在其他地方记住它,例如在数据库表中,与登录的用户和cookie名称相关联。这个问题与ava servlet无关。这就是由HTTP cookie指定的。