gla*_*666 9 java servlets thread-local java-ee
一旦我遇到了一个模式,将where ServletRequest
和响应对象放到servlet的局部ThreadLocal
变量中.servlet类还有获取当前请求和响应对象的方法.因此,为了获得这些对象,您仍然需要使用servlet对象.
拥有这些ThrealLocal
局部变量有什么意义?
Boz*_*zho 17
关键是在类中具有请求和响应对象,否则它们将不具有它们(例如它们不是servlet).一个例子是JSF管理的bean -他们的方法不带HttpServletRequest
参数,这样你就可以得到通过的请求FacesContext
,其中有他们ThreadLocal
的变量.
这样做的原因是因为每个请求都由一个单独的线程(由servlet容器)处理.所以thread = request.但有一点需要注意 - 容器倾向于使用线程池.因此,必须始终在threadlocal中设置一个新的请求,最好在之后清理它(例如在a中Filter
).否则你会得到一些意想不到的行为.
但是你应该在代码中避免这种情况.如果您需要请求或响应中的任何内容,请将其作为方法参数传递.否则,您可能会违反图层边界(例如,如果您想在服务图层中使用该请求)
归档时间: |
|
查看次数: |
9670 次 |
最近记录: |