chain和redirectAction的区别
chain 它是一个琏式的,是从一个Action转发另外一个Aciton,写action的名字即可,并把前一个Action的请求参数和值传给下一个Action
chain的使用场景:我需要连续执行好几个action,好几个action共用数据,保留下来,比如现在网站的注册,先在一个页面月度一些条款,在下一步填写部分的数据,下一步在填写一些数据,最后又填写数据,最后一步提交,万一提交失败,前面填写的数据可以保存住。分了三个页面,每一个页面的数据来自同一个action,这就好做了,如果每一页来自一个不同的action,怎么做?想保存数据?怎么做保存,用chain,好几个action的数据保存住 该种方式底层使用的转发原理。
因此在请求之后的值栈将包括初始请求的action对象和其模型驱动和转发后的action对象和其模型驱动。如此,这样的一次请求无论请求了多少个action,都会将请求过程的数据保存在值栈中,这样方便了数据的回显。例如注册流程中的每一步都请求不同action不同方法时可使用此种请求方式将用户填写过的数据保存下来,以便回显,增强用户体验。
看一下底层到底干嘛了?


redirectAction 底层使用的是重定向原理,重定向到一个指定的action的name。因为是重定向所以会发生两次请求,所以在第二次请求时,第一次请求创建的值栈以及值栈中的action对象、模型驱动对象都会消失(值栈的声明周期是一次请求期间)。在第二次请求时有会有新的值栈,这个值栈的对象栈中只有一个当前访问的action对象或模型驱动的model对象。这种重定向的方式请求的action一般作为页面的跳转使用,不会涉及到数据的处理。


本文详细解析了Struts2框架中chain与redirectAction的区别。chain用于连续执行多个Action,保持数据状态,适用于多步骤表单处理,如网站注册流程;redirectAction则基于重定向原理,不保留上一Action的状态,适用于页面跳转而不涉及数据处理的场景。
5283

被折叠的 条评论
为什么被折叠?



