25

セッションに関して、これらの呼び出しは実際には何を意味するのでしょうか?

System.out.println("print1: "+request.getSession().getId());
System.out.println("print2: "+request.getSession(false));

出力

print1: D94146A347D95563186EB7525726336B
print2: org.apache.catalina.session.StandardSessionFacade@d52411
4

8 に答える 8

19

HttpSession session = request.getSession();サービス メソッド内でセッションを要求すると、HttpSession オブジェクトの作成など、すべてが自動的に取得されます。一意のセッション ID を生成する必要はありません。新しい Cookie オブジェクトを作成する必要はありません。すべてが舞台裏で自動的に行われます。

リクエスト オブジェクトのメソッドを呼び出すとすぐgetSession()に、セッションの新しいオブジェクトがコンテナによって作成され、セッションを維持するために生成される一意のセッション ID が取得されます。このセッション ID は応答オブジェクトに送信されるため、クライアントが要求を行うたびに、コンテナーがセッションを識別できるように、要求オブジェクトにセッション ID を添付する必要があります。

request.getSession(false): このメソッドは、リクエストに対してセッションがすでに存在するかどうかを確認します。存在する場合は、すでに存在するセッションを返します。このリクエストに対して Session がまだ存在しない場合、このメソッドは NULL を返します。つまり、このメソッドは、リクエストが以前に Session を持っていないことを示しています。

于 2012-12-20T10:10:34.537 に答える
16

要するに-

request.getSession().getId()- このセッションに割り当てられた一意の識別子を含む文字列を返します。識別子はサーブレット コンテナによって割り当てられ、実装に依存します。

request.getSession(false)- 現在のセッションがない場合は、セッション オブジェクトまたは null を返します。

于 2012-12-20T10:11:33.700 に答える
5

最初の行は、サーバー上の「セッションID」を返します。2行目は、セッションオブジェクトを返します。したがって、system.outに出力されるのはrequest.getSession(false).toString();

のデフォルトの実装はtoString「オブジェクトID」を返します。Object idセッションに関しては、と同じではありませんsession id。セッションは、クラスター全体でシリアル化および複製できるため、各JVMのクラスターの各ノードで、独自のオブジェクトIDを持つことができます(ただし、同じセッションIDを持つ必要があります)。

booleanを使用したgetsessionの呼び出しについて、ここで説明します: http ://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession(boolean )

于 2012-12-20T10:12:18.603 に答える
4
    request.getSession()

このメソッドは、既存のセッションをチェックします。存在する場合はその戻り値で、そうでない場合はリクエストの新しいセッションを作成します。

    request.getSession().getId();

これにより、そのセッションの一意の識別子が返されます。

    request.getSession(false);

このメソッドはブール値を取ります。このメソッドは、そのユーザー (リクエスト) に既存のセッションが存在するかどうかをチェックします。存在する場合はそのセッションを返します。存在しない場合は null を返します。つまり、新しいセッションは作成されません。

セッションの情報を追加するだけです。

    request.getSession(true);

このメソッドは、そのユーザー (要求) の既存の現在のセッションをチェックし、セッションが存在する場合はそのセッションを返すか、そうでない場合はそのユーザーの新しいセッションを作成します。

    request.getSession() works like request.getSession(true)

参照: http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29

于 2014-01-07T06:39:32.767 に答える
2
request.getSession().getId()

セッションのIDを返します。

Request.getsession(false)既存のセッションオブジェクトを返します。セッションが存在しない場合は、何も返しません。つまり、nullを返します。一方、trueパラメータを使用すると、新しいセッションオブジェクトが作成され、セッションが存在しない場合はそれが返されます。

于 2012-12-20T10:13:23.807 に答える
1
request.getSession().getId();

すでに開始されているセッションに割り当てられた一意の文字列 ID を返します。ID の生成は、apache、jboss などのベンダー固有です。

request.getSession(false);

セッションオブジェクトが関連付けられている場合は特定のリクエストに関連付けられたセッションオブジェクトが返されます。サーバーによって開始されていない場合は null が返されます。

于 2012-12-20T10:26:59.750 に答える
0
request.getSession().getId();

これは、既存のセッションの ID を返します。

Request.getsession(false) 

セッションが存在する場合はそれを返し、存在しない場合は null を返します。

および Request.getsession(false) の意味: 存在する場合はセッションを提供し、そうでない場合は新しいインスタンスを作成しないでください (したがって、null を返します)。

于 2012-12-20T10:43:00.693 に答える