Strut2 Action的生命周期

一般而言,Action都是放在Spring容器中管理的,我会把属性设为prototype,这样,每一个请求,都会创建一个action对象。

今天碰到一个问题,当我用从一个jsp页面中输入一个属性,比如说leaveWord_id,然后提交表单,跳转到另一个jsp页面,这个属性值就获取不到了,由此,我研究了一下action的声明周期。

这是因为两个不同的action的东西不能共享,他们是线程安全的,如果你要设置某个共享的,需要用到ActionContext这个类,这个类是放一些共有的东西,当然,也可以用那几个接口都可以。

下面说一下流程:jsp_A->action_A->jsp_B(此时如果这个属性放在ActionContext中的话,action就会返回这个属性给Jsp页面,否则就不会,其实更深层的应该是值栈的东西了)

下面说一下个人理解:每一次请求新建一个action(如果你放在spring容器中管理并且设为prototype的话),在请求完毕后,会被spring容器销毁,这个action其实就相当于HttpServlet的每一个get或者post方法,只是将它封装成类而已。如果想将数据(属性等)返回,你需要放入ActionContext等中,这些东西又是放在值栈中的,随后struts2会将一些数据封装起来返回给客户端(这里就是Jsp页面),然后你可以通过s标签或者el表达式去获取。

时间: 2024-10-14 09:10:43

Strut2 Action的生命周期的相关文章

【struts2】Action的生命周期

Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例.可以稍微改造一下代码来验证一下. 给HelloWorldAction加上一个public无参的构造方法,在里面输出一句话. 大家都知道,一个Java类如果没有写构造方法,那么会有一个默认的public无参的构造方法,这里只是把它明确的写出来了,因此这么做,并没有改变Action的任何功能,只是想看一下到底什么时候,Action会被初始化.示例代码如下: public HelloWorldActi

struts2.0中Action的对象生命周期详解!!(转)

原文出处:http://blog.csdn.net/wxy_g/article/details/2071662 有很多人问Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here ### Note: short-hand notation is

struts2 Action生命周期

Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here### Note: short-hand notation is supported in some cases, such as "spring"###       Alter

Ejb in action(五)——会话Bean的生命周期

会话Bean与消息驱动Bean.实体Bean的最重要的区别在于生命周期的差异性.会话Bean实例存活期较短,它和线程类似,包括对象的创建.初始化.运行.钝化.激活.销毁. 生命周期的概念,了解生物学的童鞋一定对这个概念不陌生.这里所谓的生命周期,就是指EjbBean实例存在的各个阶段中,提供的一些注解方法.在运行时,Ejb容器会动态调用这些方法. 关于会话Bean的生命周期,Ejb3.0中一共提供了6个注解方法,这些方法都适合有状态会话Bean,而只有@postConstruct和@PreDes

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

第一章:Activity的生命周期和启动模式

Activity是Android中四大组件之首,所以需要重视,尤其是启动方式,在AndroidManifest.xml中的注册信息 (一)Activity的生命周期 1.1.1 正常情况下的生命周期 说明 (1)针对一个特定的Activity,第一次启动顺序:onCreate->onStart->onResume. (2)当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause->onStop (3)返回原Activity时,回调如下:onRestart->on

GoogleDoc - 温故而知新Activity生命周期方法

3.创建Activity一般人所不知道的地方   1)Activity里的各个生命周期的方法一般执行什么代码      >>onCreate() method shows some code that performs some fundamental setup for the activity, such as declaring the user interface (defined in an XML layout file), defining member variables, a

initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏

当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代码创建UI控件的时候就会调用: initWithCoder:从文件中解析一个对象的时候就会调用这个方法,也就是说无论是通过代码还是xib,程序运行的时候都会调用这个方法: awakeFromNib:当一个对象从xib或者storyboard中加载完毕后,就会调用一次. 比如:当苹果官方提供的按钮不能

组件的详细说明和生命周期ComponentSpecs and Lifecycle

render ReactComponent render() render() 方法是必须的. 当调用的时候,会检测 this.props 和 this.state,返回一个单子级组件.该子级组件可以是虚拟的本地DOM 组件(比如 <div /> 或者 React.DOM.div()),也可以是自定义的复合组件. 你也可以返回 null 或者 false 来表明不需要渲染任何东西.实际上,React渲染一个<noscript> 标签来处理当前的差异检查逻辑.当返回 null 或者