我知道ValueStack
是在 Struts2 中引入的,Struts1 模型的另一个变化是现在ActionObject
为每个请求实例化一个新的。所以我们可以定义实例变量而不用担心多线程问题。拦截器和 JSP 访问实例变量的ActionObjects
方式是通过ValueStack
. 但是实现方式ValueStack
(或至少由 Struts2 框架使用)是由ValueStack
. 使访问更容易,这样我们就不需要遍历整个对象树。我有以下问题。
如果我有嵌入对象(对象的多个层次结构)怎么办?在这种情况下,访问机制如何表现?
如果让我们说 2 个客户端同时向同一个 actin 发出请求,并且由于 2 个客户端提供的输入返回了 2 个不同的结果,Action 执行的结果是不同的。假设我的 Action Class 有一种获得最优价格的方法,并且基于我的后端服务中的逻辑,对于 2 个不同的请求,结果分别为 10 和 12。现在
ActionClass
有一个名为 price 的成员变量,该值将存储在其中,生成的 JSPshowResults.jsp
将访问该变量(使用标签库)以显示价格。struts2 框架如何保证 client1 和 client2 得到正确的响应,并且在 JSP 上显示响应时价格不会混乱,因为据我了解ValueStack
只是先进先出(堆栈逻辑)的方式。因此,它可能最终向两个客户端请求返回 10,因为相同的变量在值堆栈上存储了两次(具有相同的名称)但具有不同的值。什么时候
ValueStack
从列表中销毁对象?