struts2的ModelDriven接口和Preparable接口的机制和作用

ModelDriven
http://blog.csdn.net/yeshiwu/article/details/52331151

Preparable接口
http://40121331qqcom.iteye.com/blog/1140758
http://blog.knowsky.com/200033.htm

1.有prepare()方法,实现该接口的action在执行时,首先执行该方法,用于进行一些预处理。

2.创建prepareXXX方法,则在执行XXX方法前,将先执行prepareXXX方法

使用场景:
如果action针对每次请求都要执行一些相同的业务逻辑, 那么可以实现Preparable接口, 将预处理业务逻辑写在prepare()方法里

paramsPrepareParamsStack

http://blog.csdn.net/lifuxiangcaohui/article/details/6148778
paramsPrepareParamsStack在Struts 2.0中是一个很奇妙的interceptor stack,以至于很多人疑问为何不将其设置为默认的interceptor stack。paramsPrepareParamsStack主要解决了ModelDriven和Preparable的配合问题,从字面上理解来说, 这个stack的拦截器调用的顺序为:首先params,然后prepare,接下来modelDriven,最后再params。
Struts 2.0的设计上要求modelDriven在params之前调用,而业务中prepare要负责准备model,准备model又需要参数,这就需要在 prepare之前运行params拦截器设置相关参数,这个也就是创建paramsPrepareParamsStack的原因。流程如下:

 1. params拦截器首先给action中的相关参数赋值,如id
 2. prepare拦截器执行prepare方法,prepare方法中会根据参数,如id,去调用业务逻辑,设置model对象
 3. modelDriven拦截器将model对象压入value stack,这里的model对象就是在prepare中创建的
 4. params拦截器再将参数赋值给model对象
 5. action的业务逻辑执行 依据此stack
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值