web-dev-qa-db-ja.com

セッションが存在するかどうかを確認する方法は?

私はを使用してセッションを作成しています

HttpSession session = request.getSession();

セッションを作成する前に、セッションが存在するかどうかを確認します。どうすればいいですか?

20
sarah

作成する前にを確認する場合は、次のようにします。

_HttpSession session = request.getSession(false);
if (session == null) {
    // Not created yet. Now do so yourself.
    session = request.getSession();
} else {
    // Already created.
}
_

このafter作成をチェックする必要がない場合は、次のようにすることもできます。

_HttpSession session = request.getSession();
if (session.isNew()) {
    // Freshly created.
} else {
    // Already created.
}
_

行とbooleanが保存されます。 request.getSession()request.getSession(true) と同じです。

36
BalusC

関数があります request.getSession(boolean create)

パラメータ:
create-必要に応じてこのリクエストの新しいセッションを作成する場合はtrue。現在のセッションがない場合にnullを返す場合はfalse

したがって、falseを渡すだけで、getSessionにセッションが存在しない場合にnullを返すように指示できます。

22
aioobe
if(null == session.getAttribute("name")){  
  // User is not logged in.  
}else{  
  // User IS logged in.  
}  
5

HttpSession session = request.getSession(true); if(session.isNew()){...何かをする} else {...他の何かをする}

.getSession(true)は、Javaが存在しない場合に新しいセッションを作成するように指示します。

もちろんあなたもするかもしれません:

if(request.getSession(false) != null){
    HttpSession session = request.getSession();
}

ご覧ください: http://Java.Sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

乾杯、ヨルゲン

4
rakke

あなたがあなたのウェブサイトに接続するすべての新しいユーザーのために新しいセッションを作成するなら、あなたのパフォーマンスは大きな打撃を受けるでしょう、と付け加えます。 request.getSession(false)を使用して、ユーザーにセッションがあるかどうかを確認します。このメソッドを使用すると、ユーザーが認証されているかどうかに基づいてビューをレンダリングする場合、新しいセッションを作成しません。