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)
&..()
の違いについての質問の重複として可能
request.getSession()
は単なる便利なメソッドです。 request.getSession(true)
とまったく同じです。
request.getSession()
は現在のセッションを返します。現在のセッションが存在しない場合、-新しいセッションが作成されます。
request.getSession(true)
は現在のセッションを返します。現在のセッションが存在しない場合、-新しいセッションが作成されます。
したがって、基本的には両方の方法に違いはありません。
request.getSession(false)
は、現在のセッションが存在する場合、現在のセッションを返します。その後、not新しいセッションを作成します。
ブール引数を持つメソッド:
request.getSession(true);
セッションがリクエストに関連付けられていない場合、新しいセッションを返します
request.getSession(false);
セッションが要求に関連付けられていない場合、nullを返します。
ブール引数のないメソッド:
request.getSession();
セッションがリクエストに関連付けられていない場合は新しいセッションを返し、セッションがリクエストに関連付けられている場合は既存のセッションを返します。nullは返しません。
リンクしたドキュメントに記載されているように、どちらも同じものを返します。 HttpSessionオブジェクト。
また、具体的な実装(例: Tomcat )を見て、実際に何をしているかを確認することもできます: Request.Java class。この場合、基本的に両者は以下を呼び出します:
Session session = doGetSession(true);
大きな実用的な違いは、その使用です:
常に新しいセッションが必要なsecurity scenario
では、request.getSession(true)
を使用する必要があります。
request.getSession(false): will return null if no session found.
request.getSession()またはrequest.getSession(true)は両方とも現在のセッションのみを返します。現在のセッションが存在しない場合、新しいセッションが作成されます。