【问题标题】:HttpServletRequest request.setAttribute vs ThreadLocal vs RequestContextHolderHttpServletRequest request.setAttribute vs ThreadLocal vs RequestContextHolder
【发布时间】:2016-04-17 20:07:14
【问题描述】:

我需要有一个特定于请求的对象,并在整个 Web 应用程序中使用同一个对象来获取/设置它的值,以执行特定请求的业务逻辑。我可以使用 request.setAttribute/request.getAttribute 还是应该使用 ThreadLocal。我的理解是每个请求都由线程池中的单独线程处理。我在 Spring Web 应用程序中有这个。我也可以看到 RequestContextHolder ,不确定哪个合适

【问题讨论】:

标签: servlets thread-local setattribute getattribute


【解决方案1】:

您似乎希望每个特定请求都可以使用应用程序范围的属性。为此,您可以使用 request.getServletContext().setAttribute() 和 request.getServletContext().getAttribute()。 ServletContext 表示应用程序,因此使用它设置的属性在应用程序的生命周期内都可用,并且可以被多个请求使用。

【讨论】:

  • 需要请求特定对象而不是应用范围
  • 请澄清问题,您说“....并在整个 Web 应用程序中使用同一个对象来获取/设置值......”。
  • 我的意思是一个对象用于跨不同 Web 组件的一个请求线程(请求特定对象)的整个执行
猜你喜欢
  • 2014-08-17
  • 2011-09-18
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2010-12-09
  • 2017-06-20
相关资源
最近更新 更多