5

和有什么区别

request.getSession() 

getThreadLocalRequest().getSession()

我正在维护的应用程序似乎将第一个用于直接 Servlet,第二个用于通过 GWT-RPC 实现的任何东西,该 GWT-RPC 本身扩展了 servlet。

4

4 回答 4

7

他们都返回相同的东西。GWT 只是将 servlet 发送的请求存储到本地线程中,这样您就不需要在每个方法调用中传递它,并且request每个调用仍然有一个单独的请求。

于 2011-06-02T22:10:31.920 回答
4

getThreadLocalRequest() 是获取 HttpServletRequest 的便捷方法。

request.getSession() 和 getThreadLocalRequest().getSession() 都返回相同的 HttpSession,区别在于获取 HttpServletRequest 的方式。

于 2011-06-02T22:21:12.087 回答
2

主要原因是你在你的 GWT Servlet 中使用了你自己的 RPC 方法,这些方法没有HTTPRequest作为参数 - 与标准 Servlet 方法相比doGet(...)doXYZ(...)... 因此,访问 的唯一方法HTTPRequest是提供您通常应该扩展getThreadLocalRequest()的 GWT 。RemoteServiceServlet

于 2012-08-14T08:07:01.830 回答
2

区别在于范围。具体来说,请求变量只能直接从doGet(..)doPost(..)等方法范围(在方法内部)获得。一旦您所在的线程退出方法并进入您的 biz 方法doSomething()等,您的代码就无法再访问请求变量(范围已更改),但getThreadLocal..()无论您使用哪种方法,您都可以访问当然你和等在同一个线程中doGet()

于 2012-10-23T04:37:28.327 回答