0

我正在尝试将最新时间保存在 cookie 中。因此,在每次控制器调用之后,我都使用 HandlerInterceptor 的 postHandle 来拦截调用。我正在更新 cookie 中的值。但价值观没有更新。任何人都知道为什么它不起作用。

编码:

@Override
public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler, ModelAndView ex)
            throws Exception {

        boolean isSet = true;
        if (request.getSession().getAttribute("userId") != null){
                for (Cookie cookies: request.getCookies()) {
                    if ("RequestTime".equals(cookies.getName())) {
                        isSet = false;
                         cookies.setValue(Long.toString(System.currentTimeMillis()));
                         response.addCookie(cookies);
                }
            }
            if(isSet){
                Cookie cookie = new Cookie("RequestTime", Long.toString(System.currentTimeMillis()));
                response.addCookie(cookie);
            }
        }
    }
4

1 回答 1

0

当你创建cookie时,你应该设置cookie的路径,当你想在你的项目中共享这个cookie时,你应该将cookie路径设置为“/”,如

    if (request.getSession().getAttribute("userId") != null){
       Cookie cookie = new Cookie("RequestTime",Long.toString(System.currentTimeMillis()));
       cookie.setPath("/")
       response.addCookie(cookie); }

默认 cookie 路径是当前请求 URL。

注意:如果您想共享来自不同子域的 cookie,您还应该设置 cookie 域。

cookie.setDomain(".test.com")

于 2012-07-10T10:05:25.637 回答