属性驱动,域属性驱动,模型驱动

属性驱动
在Struts2中,可以直接在Action中定义各种Java基本数据类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递,如下面代码所示:


域驱动

在属性驱动方式中,如果要传入的数据很多的话,那么Action的属性也会变得很多。再加上属性有对应的getter/setter方法,Action类的代码会非常大,在Action里编写业务代码时,会使Action非常臃肿,不够简洁,因此引入域属性驱动这种方式获取请求参数。

域属性驱动就是将属性和对应的getter/setter方法提取出来,创建一个JavaBean将其封装起来,在相应的Action里直接使用这个对象即可。

UserLogin.jsp

这种方式传值是必须是“对象.属性名”,在jsp页面取值也必须是“对象.属性名”。为什么要这么写了?因为当我们提交表单数据到Action中的时候,找不到username和password属性。此时虽然有user对象属性,但并没有执行getUser()方法获取到user对象,而当我们将username写成user.username,password写成user.password,那么username和password就成为user对象的属性,再提交表单数据的时候,它就会去找Action里面的user对象,这时就会通过getUser()方法获取user对象。

UserLoginAction.java


模型驱动

通过模型驱动方式传递参数的时候,jsp页面可以直接试属性名。使用模型驱动时,必须要求这个Action类实现ModelDriven接口,并重写getModel()方法。


userLogin.jsp

当表单提交数据到对应的Action时,Struts会创建Action,并把Action放入到值栈的栈顶,并且在值栈中有一个model(这里是user)属性,然后通过getModel()方法取出这个model并返回User类型的对象。使用了ModelDriven的方式,一个Action只能对应一个Model,因此不需要添加user前缀,页面上的username对应到这个Model的username属性。

本人第一次写博客,写的不对的地方还请见谅。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值