Java Struts2结果、线程安全和操作上下文?

Java Struts2结果、线程安全和操作上下文?,java,struts2,web,Java,Struts2,Web,在Struts2中 操作是线程安全的,每个请求都会启动一个单独的操作类对象 拦截器不是线程安全的,因为对所有请求只在对象上启动。它们在execute()方法中接收ActionInvocation对象,并可以使用此对象访问操作上下文。请看“ 记住这些,我相信 结果不是线程安全的,因为它们在execute()方法中接收ActionInvocation对象 在创建自定义结果类时,我在“Manning Struts2 in Action”一书中发现了以下代码行 ServletActionCont

在Struts2中

  • 操作是线程安全的,每个请求都会启动一个单独的操作类对象
  • 拦截器不是线程安全的,因为对所有请求只在对象上启动。它们在execute()方法中接收ActionInvocation对象,并可以使用此对象访问操作上下文。请看“
记住这些,我相信

  • 结果不是线程安全的,因为它们在execute()方法中接收ActionInvocation对象
在创建自定义结果类时,我在“Manning Struts2 in Action”一书中发现了以下代码行

ServletActionContext.getResponse()
我对作者为什么没有使用actionInvocation对象得到响应感到困惑

actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_RESPONSE);
现在我脑子里有以下问题

  • 结果是线程安全的吗
  • 若结果不是线程安全的,并且存在两个不同的请求,ServletActionContext如何返回相关响应

上下文使用
ThreadLocal
s


每个请求的结果都有明确的实例化——看看一些简单的东西,比如
StreamResult
:它使用实例变量来处理
contentType
等内容。

上下文使用
ThreadLocal
s


每个请求的结果都被明确地实例化了——看看一些简单的东西,比如
StreamResult
:它使用实例变量来处理
contentType
等等。

谢谢@DaveNewton。你让事情变得简洁明了。Struts2结果是线程安全的,上下文使用ThreadLocal。谢谢@DaveNewton。你让事情变得简洁明了。Struts2结果是线程安全的,上下文使用ThreadLocal。