ValueStack对象的传送带机制

转载 2011年01月09日 22:35:00

来源:BlogJava    作者:银河使者    责编:豆豆技术应用

注:部分 地址:http://tech.ddvip.com/2009-02/1234411064108410.html

 

众所周知,Strut 2的Action类通过属性可以获得所有相关的值,如请求参数、Action配置参数、向其他Action传递属性值(通过chain结果)等等。要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性,在Struts 2调用Action类的Action方法(默认是execute方法)之前,就会为相应的Action属性赋值。

  要完成这个功能,有很大程度上,Struts 2要依赖于ValueStack对象。这个对象贯穿整个Action的生命周期(每个Action类的对象实例会拥有一个ValueStack对象)。当Struts 2接收到一个.action的请求后,会先建立Action类的对象实例,但并不会调用Action方法,而是先将Action类的相应属性放到ValueStack对象的顶层节点(ValueStack对象相当于一个栈)。只是所有的属性值都是默认的值,如String类型的属性值为null,int类型的属性值为0等。

  在处理完上述工作后,Struts 2就会调用拦截器链中的拦截器,当调用完所有的拦截器后,最后会调用Action类的Action方法,在调用Action方法之前,会将ValueStack对象顶层节点中的属性值赋给Action类中相应的属性。大家要注意,在这里就给我们带来了很大的灵活性。也就是说,在Struts 2调用拦截器的过程中,可以改变ValueStack对象中属性的值,当改变某个属性值后,Action类的相应属性值就会变成在拦截器中最后改变该属性的这个值。

  从上面的描述很容易知道,在Struts 2的的Action类可以获得与属性同名的参数值就是通过不同的拦截器来处理的,如获得请求参数的拦截器是params,获得Action的配置参数的拦截器是staticParams等。在这些拦截器内部读取相应的值,并更新ValueStack对象顶层节点的相应属性的值。而ValueStack对象就象一个传送带,将属性值从一个拦截器传到了另一个拦截器(当然,在这其间,属性值可能改变),最后会传到Action对象,并将ValueStack对象中的属性的值终值赋给Action类的相应属性。

值栈详解(ValueStack)

什么是值栈之前web阶段,在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到。域对象在一定范围内,存值和取值。在struts2里面提供了本身的一种存储机制,类似于域对象,...
  • Marvel__Dead
  • Marvel__Dead
  • 2017年03月04日 20:46
  • 4007

JMS消息传送机制ActiveMQ

JMS(Java Message Service) 消息服务是一个面向消息中间件(MOM)的API,用于在两个应用程序之间,或者分布式系统中发送消息消费消息,进行异步通信,数据交互。JMS提供的API...
  • manmanxiaohui
  • manmanxiaohui
  • 2016年10月11日 21:54
  • 1300

Handler消息传送机制总结

Handler类的主要作用: 1.在子线程中发送数据。 2.在主线程中接收数据,处理数据。 这个过程和使用的方法都是我们要理解的...
  • wenzhi20102321
  • wenzhi20102321
  • 2016年10月17日 12:50
  • 2370

Struts 2杂谈(1):ValueStack对象的传送带机制

众所周知,Strut 2的Action类通过属性可以获得所有相关的值,如请求参数、Action配置参数、向其他Action传递属性值(通过chain结果)等等。要获得这些参数值,我们要做的唯一一件事就...
  • woshiwxw765
  • woshiwxw765
  • 2011年08月07日 11:45
  • 520

Struts2数据传输的背后机制:ValueStack(值栈)

原文链接:http://blog.csdn.net/li_tengfei/article/details/6098134
  • liliiii
  • liliiii
  • 2014年11月10日 11:42
  • 574

Struts2数据传输的背后机制:ValueStack(值栈)

1.     数据传输背后机制:ValueStack(值栈)   在这一切的背后,是因为有了ValueStack(值栈)!   ValueStack基础:OGNL 要了解ValueStack...
  • xwq911
  • xwq911
  • 2015年07月18日 01:11
  • 277

Struts2数据传输的背后机制:ValueStack(值栈)

1.     数据传输背后机制:ValueStack(值栈)   在这一切的背后,是因为有了ValueStack(值栈)!   ValueStack基础:OGNL 要了解ValueStack...
  • a1294246096
  • a1294246096
  • 2014年03月15日 22:06
  • 574

Struts2数据传输的背后机制:ValueStack(值栈)

Struts2数据传输的背后机制:ValueStack(值栈) http://blog.csdn.net/li_tengfei/archive/2010/12/25/6098134.aspx1.   ...
  • easyjsf
  • easyjsf
  • 2011年06月06日 20:48
  • 572

Struts2数据传输的背后机制:ValueStack(值栈)

1.     数据传输背后机制:ValueStack(值栈)   在这一切的背后,是因为有了ValueStack(值栈)!   ValueStack基础:OGNL 要了解ValueStack...
  • billfanggs
  • billfanggs
  • 2014年02月17日 17:00
  • 534

Struts2数据传输的背后机制:ValueStack(值栈)

1.     数据传输背后机制:ValueStack(值栈)   在这一切的背后,是因为有了ValueStack(值栈)!   ValueStack基础:OGNL 要了解Valu...
  • Ericans
  • Ericans
  • 2012年10月07日 23:38
  • 571
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ValueStack对象的传送带机制
举报原因:
原因补充:

(最多只允许输入30个字)