首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts2 ValueStack如何处理多个请求

Struts2 ValueStack如何处理多个请求
EN

Stack Overflow用户
提问于 2013-12-06 06:24:27
回答 1查看 1.8K关注 0票数 1

据我所知,ValueStack是在Struts2中引入的,现在对Struts1模型的另一个更改是为每个请求实例化一个新的ActionObject。因此,我们可以定义实例变量,而不必担心多线程问题。拦截器和JSP从ActionObjects访问实例变量的方式是通过ValueStack。但是ValueStack的实现方式(或者至少由Struts2框架使用)是由ValueStack实现的。使访问更容易,这样我们就不需要遍历整个对象树。我有以下问题。

  1. 如果我有嵌入对象(对象的多个层次结构),该怎么办?在这种情况下,访问机制是如何表现的?
  2. 假设两个客户同时向同一个actin提出请求,而的结果是不同的,因为两个客户端提供的输入有两个不同的结果。假设我的Action类有一个获得最佳价格的方法,并且基于后端服务中的逻辑,对于两个不同的请求,结果为10和12。现在,ActionClass有一个名为price的成员变量,在这个变量中将存储这个值,由此产生的showResults.jsp将访问这个变量(使用标记库)来显示价格。struts2框架如何保证client1和client2得到正确的响应,并且在JSP上显示响应时价格不会乱七八糟,因为据我理解,ValueStack只是先出(堆栈逻辑)方式。因此,它可能最终返回10到两个客户端请求,因为相同的变量在值堆栈上存储两次(同名),但值不同。
  3. ValueStack何时从其列表中销毁对象?
EN

回答 1

Stack Overflow用户

发布于 2013-12-06 13:36:09

  1. 嵌入式对象或换句话说,嵌套bean直接通过访问器或OGNL访问它们,OGNL在计算OGNL表达式时使用该访问器。Struts2将操作bean放置在valueStacktop上,因此操作属性按名称检索,但嵌套bean使用OGNL点表示法进行解析。关于OGNL的更多信息,您可以在文档中找到。
  2. 每个操作实例都有自己的上下文和valueStack,因此客户端不相互干扰,并且有自己的值,除非在application作用域中维护这些值。
  3. valueStack由dispatcher创建并放到操作上下文中。它也可以在需要时由一些拦截器重新创建。您不应该担心它的价值,因为它们在操作结束时就被破坏了。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20417423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档