14

ユーザーがログインに成功したときに、サーブレットでセッションを開きました。

HttpSession session = request.getSession(true);
session.setAttribute("name", name);

次に、logout.jspに書き込み、セッションを終了します。

<%session.invalidate();%>

セッションが有効かどうかを確認するには、次のようにします。

HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");

しかし、それは機能していません。session.invalidateの後でもセッションを有効にしています。誰かが私が間違っているところを理解していますか?

4

2 に答える 2

26

session.getSession(false)を呼び出す必要があります-現在のセッションがない場合はnullを返します。

ドキュメントによると

HttpSession#getSession(boolean create)--create --trueは、必要に応じてこのリクエストの新しいセッションを作成します。現在のセッションがない場合にnullを返す場合はfalse。

したがって、セッション値チェックの正しい方法は-

HttpSession session = request.getSession(false);
if(session!=null)
  session.setAttribute("name", name);

そして、セッションを無効にすると-

HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
于 2013-01-21T18:41:39.307 に答える
-1

セッションを検証するには

HttpSession session = request.getSession(true);
session.setAttribute("name", name);

それを無効にするには、あなたがする必要があります

session.removeAttribute("name");
session.invalidate();

ただし、オブジェクトが無効になる可能性があることに注意する必要がありますが、これは、すべての属性がなくなった後でオブジェクトを無効にした後でも、セッションオブジェクトが再利用される可能性があるため、すぐにクリーンアップされることを意味するわけではありません。同じユーザーIDを取得しました。と作成時間。

于 2014-07-02T12:47:16.173 に答える