3

ログインするユーザーごとに、Springセッションで彼のIDを保存したかったのです。私がしたことは:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
    HttpSession session = request.getSession(true);

    session.getServletContext().setAttribute("userId", userId); 

IDが必要なとき、私はやっていた

 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();  
 HttpSession session = request.getSession();
 Long userId = (Long) session.getServletContext().getAttribute("userId");

最初のユーザー ログイン、セッション ID の取得は問題ありません。

2 番目のユーザーがログインすると、セッション ID が上書きされます (最初のユーザーの次のアクションごとに、2 番目のユーザーのユーザー ID が取得されるため、わかります)

これを達成するための適切な方法は何ですか?明らかにセッションを正しく理解していませんか?

すべてのアドバイスに感謝します

4

3 に答える 3

5

に属性を保存しています。これは、同じ webappServletContextのすべてのセッション間で共有されます。

HttpSession属性をそれ自体に保存する必要があります。

session.setAttribute("userId", userId);

次に、それを取得します。

Long userId = (Long) session.getAttribute("userId");

于 2012-09-21T15:04:42.997 に答える
1

HttpSessionここでは使用していません。ServletContext名前が示すように、シングルトンである を使用しています。

session.setAttribute("userId", userId);

Long userId = (Long) session.getAttribute("userId");
于 2012-09-21T15:04:50.180 に答える
0

sessionBean オブジェクトを HttpSession に保存することを好みます...セッションに保持したいデータでBeanを作成できます

session.setAttribute("sessionData",sessionBean);

于 2013-12-12T21:07:57.853 に答える