違いは何ですか
request.getSession()
と
getThreadLocalRequest().getSession()
私が維持しているアプリケーションは、最初のサーブレットをそのまま使用し、2 番目のサーブレットを拡張する GWT-RPC を介して実装されたものを使用しているようです。
違いは何ですか
request.getSession()
と
getThreadLocalRequest().getSession()
私が維持しているアプリケーションは、最初のサーブレットをそのまま使用し、2 番目のサーブレットを拡張する GWT-RPC を介して実装されたものを使用しているようです。
どちらも同じものを返します。GWT は、サーブレットから送信されたリクエストをスレッド ローカルに格納するだけなので、すべてのメソッド呼び出しでリクエストを渡す必要がなく、request
呼び出しごとに個別のリクエストを保持できます。
getThreadLocalRequest() は、HttpServletRequest を取得する便利なメソッドです。
request.getSession() と getThreadLocalRequest().getSession() の両方が同じ HttpSession を返します。違いは、HttpServletRequest を取得する方法です。
主な理由は、GWT サーブレットで をパラメーターとして取得しない独自の RPC メソッドを使用することです。HTTPRequest
標準のサーブレット メソッドとは対照的にdoGet(...)
、...、doXYZ(...)
. したがって、にアクセスする唯一の方法は、通常は拡張するGWTをHTTPRequest
提供することです。getThreadLocalRequest()
RemoteServiceServlet
違いは範囲です。doGet(..)
具体的には、 request 変数は、doPost(..)
、 などのメソッド スコープ (メソッド内)から直接のみ使用できます。現在のスレッドがメソッドを終了し、ビジネス メソッドなどに入ると、コードはリクエスト変数にアクセスできなくなりますdoSomething()
(スコープが変更されます)。もちろん、あなたはなどgetThreadLocal..()
と同じスレッドにいます。doGet()