5

違いは何ですか

request.getSession() 

getThreadLocalRequest().getSession()

私が維持しているアプリケーションは、最初のサーブレットをそのまま使用し、2 番目のサーブレットを拡張する GWT-RPC を介して実装されたものを使用しているようです。

4

4 に答える 4

7

どちらも同じものを返します。GWT は、サーブレットから送信されたリクエストをスレッド ローカルに格納するだけなので、すべてのメソッド呼び出しでリクエストを渡す必要がなく、request呼び出しごとに個別のリクエストを保持できます。

于 2011-06-02T22:10:31.920 に答える
4

getThreadLocalRequest() は、HttpServletRequest を取得する便利なメソッドです。

request.getSession() と getThreadLocalRequest().getSession() の両方が同じ HttpSession を返します。違いは、HttpServletRequest を取得する方法です。

于 2011-06-02T22:21:12.087 に答える
2

主な理由は、GWT サーブレットで をパラメーターとして取得しない独自の RPC メソッドを使用することです。HTTPRequest標準のサーブレット メソッドとは対照的にdoGet(...)、...、doXYZ(...). したがって、にアクセスする唯一の方法は、通常は拡張するGWTをHTTPRequest提供することです。getThreadLocalRequest()RemoteServiceServlet

于 2012-08-14T08:07:01.830 に答える
2

違いは範囲です。doGet(..)具体的には、 request 変数は、doPost(..)、 などのメソッド スコープ (メソッド内)から直接のみ使用できます。現在のスレッドがメソッドを終了し、ビジネス メソッドなどに入ると、コードはリクエスト変数にアクセスできなくなりますdoSomething()(スコープが変更されます)。もちろん、あなたはなどgetThreadLocal..()と同じスレッドにいます。doGet()

于 2012-10-23T04:37:28.327 に答える