• 动作类是多例的,每次动作访问,动作类都会实例化。所以是线程安全的。
  • 与Struts1的区别是,struts1的动作类是单例的。 
  • 在同一个线程中获取的contextMap的对象完全一样, 即一个用户使用一个contextMap和ValueStack
  •  

     contextMap中存值

  • struts 的contextMap与valueStack

     valueStack中存值

struts 的contextMap与valueStack

 

取contextMap中的数据,需使用#

struts 的contextMap与valueStack

取contextMap里面ValueStack中对象的属性:直接写属性名

struts 的contextMap与valueStack

如果遇有对象属性重名,可以通过OGNL表达式,选择查找的起始位置

第一个username

  • struts 的contextMap与valueStack

存入new user 这里边有一个属性username 

  • struts 的contextMap与valueStack
  • struts 的contextMap与valueStack
  • 一共出现了两个username
  • struts 的contextMap与valueStack
  • 特殊说明:当s:property不给定value属性时,默认取栈顶对象。

相关文章: