Spring mvc:在HandlerInterceptor的postHandle中更改响应对象

时间:2012-07-10 09:53:20

标签: java cookies spring-mvc interceptor

我正在尝试将最新时间保存在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);
            }
        }
    }

1 个答案:

答案 0 :(得分: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路径是当前请求网址。

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

cookie.setDomain(".test.com")