1

セッション変数を設定し、将来のリクエストで取得しようとしています。Spring MVC でこれを行うにはいくつかの方法があるようです。いくつかの方法を試しましたが、どれもうまくいきません。最も単純な方法 (手動セッション操作) に戻りましたが、まだ運がありません。

これが私のコードです:

@Controller
public class Test {

private static final Logger LOG = Logger.getLogger(Test.class);

@RequestMapping({ "/set", "/set/" })
public final ModelAndView set(
        final HttpServletRequest request,
        final HttpServletResponse response, 
        final HttpSession session) {

    LOG.info("setting the session");
    session.setAttribute("userId", new Object());
    request.getSession(true).setAttribute("userId", new Object());

    return new ModelAndView("someView");
}

@RequestMapping({ "/get", "/get/" })
public final ModelAndView get(
        final HttpServletRequest request,
        final HttpServletResponse response, 
        final HttpSession session) {

    final HttpSession session1 = request.getSession();
    final Object userId = session.getAttribute("userId");
    final Object userId1 = session1.getAttribute("userId");
    LOG.info("and the userId is '" + userId + "' '" + userId1 + "'");

    return new ModelAndView("someView");
}
}

サーバーを /set でヒットし、次に /get でヒットしました。ログを見ると、次のように表示されます。

setting the session
and the userId is 'null' 'null'

なぜこれが機能しないのですか?

4

1 に答える 1

0

理由はわかりませんが、web.xml に以下を追加すると問題が解決しました。

  <listener>
    <listener-class>
      org.springframework.web.context.request.RequestContextListener
    </listener-class>
  </listener>
于 2012-10-08T01:37:49.447 に答える