Structs2模型驱动与属性驱动

#两种方式
When:当你从jsp界面调到action时,
##属性驱动
属性驱动需要你在action中定义属性,这些属性就是jsp表单属性,当你从jsp界面跳到action,struts的拦截器就会调用你的action的setxx方法,将你表单的属性注入action中对应的属性,好了,那么问题来了,假设你的表单有10000个属性,那么你就需要在action中定义10000个属性。。。。。然后你的service方法需要传入一个对象,那么你需要将这10000个属性封装成一个对象,然后传给service方法,模型驱动只需要定义一个对象就可以。
##模型驱动
模型驱动会将jsp界面上的表单属性自动封装成一个javaBean对象,因为大多时候service方法参数是这个指定对象,你拿到这个javaBean对象直接作为参数,通过service访问dao层方法(比如增删改查);
#优缺点对比

##模型驱动的优点:
action类中会比较简洁,利于传参;缺点:在jsp界面定义表单属性name时需要xxx.id这种格式定义表单nama属性。
##属性驱动的优点:
当你要的参数不多,而且这些参数不是不需要封装成一个类,用属性驱动会比较好

模型驱动实现方式

(1)模型驱动的Action必须实现ModelDriven接口,而且要提供相应的泛型,这里当然就是具体使用的Java Bean了。
(2)实现ModelDriven的getModel方法,其实就是简单的返回泛型的一个对象。
(3)在Action提供一个泛型的私有对象,这里假如定义一个User的user对象,并提供相应的getter与setter。
好了,上面的三件事做完之后,Action就会去自动调用User的setter将表单中的name属性的值赋给User中的属性。而Action的后续处理的Jsp页面后者是Servlet就可以使用user对象了。

###如何选择?一些建议:
(1)请你统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。
(2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,那么就使用模型驱动吧,毕竟看起来代码要整洁得多。
(3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值