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 に答える