和有什么区别
request.getSession()
和
getThreadLocalRequest().getSession()
我正在维护的应用程序似乎将第一个用于直接 Servlet,第二个用于通过 GWT-RPC 实现的任何东西,该 GWT-RPC 本身扩展了 servlet。
和有什么区别
request.getSession()
和
getThreadLocalRequest().getSession()
我正在维护的应用程序似乎将第一个用于直接 Servlet,第二个用于通过 GWT-RPC 实现的任何东西,该 GWT-RPC 本身扩展了 servlet。
他们都返回相同的东西。GWT 只是将 servlet 发送的请求存储到本地线程中,这样您就不需要在每个方法调用中传递它,并且request
每个调用仍然有一个单独的请求。
getThreadLocalRequest() 是获取 HttpServletRequest 的便捷方法。
request.getSession() 和 getThreadLocalRequest().getSession() 都返回相同的 HttpSession,区别在于获取 HttpServletRequest 的方式。
主要原因是你在你的 GWT Servlet 中使用了你自己的 RPC 方法,这些方法没有HTTPRequest
作为参数 - 与标准 Servlet 方法相比doGet(...)
,doXYZ(...)
... 因此,访问 的唯一方法HTTPRequest
是提供您通常应该扩展getThreadLocalRequest()
的 GWT 。RemoteServiceServlet
区别在于范围。具体来说,请求变量只能直接从doGet(..)
、doPost(..)
等方法范围(在方法内部)获得。一旦您所在的线程退出方法并进入您的 biz 方法doSomething()
等,您的代码就无法再访问请求变量(范围已更改),但getThreadLocal..()
无论您使用哪种方法,您都可以访问当然你和等在同一个线程中doGet()
。