Struts2中给开发者提供了三种接收用户输入参数的机制,我们可以根据自己项目的需求和个人习惯来选择适合自己的接收机制。
今天分别使用着三种机制来实现了一个简单的用户登录.
三种机制:
1、使用Action类中的属性接收用户输入参数
2、使用领域模型对象接收用户输入参数
3、使用Struts2独有的模型驱动接收用户输入参数
第一种是我们入门时最先接触的一种方式,很简单、也很容易接受和理解。转发时在页面获取参数
值为为:
<s:property value="username" />
第二种是我们开发项目时最为常用的,对于一个属性相对比较多的时候,如果把属性都写到Action中
那会把Acton类弄的很乱,所以属性较多的时候最好选择第二种方式来接收用户输入参数。转发时在界
面获取参数值为:
<s:property value="user.username" />
第三种方式比较特殊,它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动
(ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口,使用它
的getModel()方法来通知Struts2要注入的属性类型,并且声明属性时一定要实例化,但不需get,
set方法(这是与第二种方式的区别)。
- package com.lsc.alan.action;
- import com.lsc.alan.vo.User;
- import com.opensymphony.xwork2.ModelDriven;
- /**
- * 使用模型驱动来接受用户输入,需要实现ModelDriven接口
- * @author Alan
- * 时间:2009年7月10日
- */
- public class LoginAction3 implements ModelDriven<User>{
- /** 领域模型User对象 **/
- private User user = new User();
- public User getModel() {
- return user;
- }
- public String execute(){
- if (user.getUsername().equals("Alan") && user.getPassword().equals("Alan")){
- return "success";
- } else {
- return "failure";
- }
- }
- }
转发时在界面获取参数值为:
<s:property value="username" />