違いは何ですか
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()