Struts2中的属性驱动和模型驱动

我们之前写的Action扮演了两种角色,既用于封装用户请求参数又处理控制逻辑。一般情况下用户的请求参数和action的处理结果都应该封装在model对象中。这就是模型驱动模式。这里要说说属性驱动和模型驱动,前者是以Action作为信息的携带者来封装用户请求参数和处理结果的,后者是使用Model示例取而代之的。就单单从Action的层面上来讲,模型驱动实现了Model和Controller的分离。下面看一个简单的例子:

首先定义一个Model类(其实就是JavaBean),用其封装用户请求参数和处理结果。

public class UserBean {

private String username;

private String password;

private String tip;

public String getUsername() {

   return username;

}

public void setUsername(String username) {

   this.username = username;

}

public String getPassword() {

   return password;

}

public void setPassword(String password) {

   this.password = password;

}

public String getTip() {

   return tip;

}

public void setTip(String tip) {

   this.tip = tip;

}

}

接下来我们就要定义模型驱动的Action,该Action要实现一个ModelDrivern接口。代码实现如下:

public class LoginAction implementsAction, ModelDriven {

private UserBean model = new UserBean();

public String execute() throws Exception {

   return SUCCESS;

}



public UserBean getModel() {

   return model;

}

}

结果页面如下:

${model.username }

${model.password }

我们就很纳闷儿,为什么我们在Action中实例化了一个UserBean对象后,用户请求参数值就自动赋给该对象的相应属性了呢?其实Struts2中有内置的model-driven拦截器,它会拦截用户请求参数,将其赋给Action中的Model对象的属性。

其实在结果页面中获取action中Model对象的属性还可以使用下面的表达式语句。

${username }

${password }

因为此时我们通过<s:debug />标签会发现我们在Action中定义的Model对象已经被置于值栈的最顶端了。因此可以直接访问其属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值