web-dev-qa-db-ja.com

request.getSession()とrequest.getSession(true)の違い

request.getSession(true)request.getSession(false)の違いを理解しています。しかし、request.getSession()request.getSession(true)は非常によく似ています!

両方とも「このリクエストに関連付けられた現在のセッションを返す」が、次の点で異なる:

request.getSession()

「またはリクエストにセッションがない場合、はセッションを作成します

request.getSession(true)

「現在のセッションがない場合、は新しいセッションを返します

私はそれらの違いを理解していません、(存在しない場合)彼らは新しいセッションを作成しますが、最初のセッションはreturnそれを作成しませんしかし、2番目はそうですか?

ソース: http://docs.Oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

編集:

誰かが私の質問に重複していなくてもタグ付け/マークを付けました。理由を説明します。

request.getSession()request.getSession(true)の違いを明示的に要求しましたが、request.getSession(true)request.getSession(false)の違いは要求していません。明示的に述べましたが、b_w ..(true)..(false)の違いはすでに理解しています。

質問 linked は、..(true)..(false)ではなく、b/w ..(true)..()の違いについての質問の重複として可能

35
Ali Khan

request.getSession()は単なる便利なメソッドです。 request.getSession(true)とまったく同じです。

35
Jan

request.getSession()は現在のセッションを返します。現在のセッションが存在しない場合、-新しいセッションが作成されます

request.getSession(true)は現在のセッションを返します。現在のセッションが存在しない場合、-新しいセッションが作成されます

したがって、基本的には両方の方法に違いはありません。

request.getSession(false)は、現在のセッションが存在する場合、現在のセッションを返します。その後、not新しいセッションを作成します

63
Ranjitsinh

ブール引数を持つメソッド:

  request.getSession(true);

セッションがリクエストに関連付けられていない場合、新しいセッションを返します

  request.getSession(false);

セッションが要求に関連付けられていない場合、nullを返します。

ブール引数のないメソッド:

  request.getSession();

セッションがリクエストに関連付けられていない場合は新しいセッションを返し、セッションがリクエストに関連付けられている場合は既存のセッションを返します。nullは返しません。

5
Ruby Kannan

リンクしたドキュメントに記載されているように、どちらも同じものを返します。 HttpSessionオブジェクト。

また、具体的な実装(例: Tomcat )を見て、実際に何をしているかを確認することもできます: Request.Java class。この場合、基本的に両者は以下を呼び出します:

Session session = doGetSession(true);
4
mike

大きな実用的な違いは、その使用です:

常に新しいセッションが必要なsecurity scenarioでは、request.getSession(true)を使用する必要があります。

request.getSession(false): will return null if no session found.
3
user3906011

request.getSession()またはrequest.getSession(true)は両方とも現在のセッションのみを返します。現在のセッションが存在しない場合、新しいセッションが作成されます。

0
NPE