第一种,直接用action的属性接收,是初学者常用的方法。
1 package com.starain.user; 2 public class User{ 3 private String username; 4 private String password; 5 public String getUsername(){ 6 return username; 7 } 8 public void setUsername(String username){ 9 this.username = username; 10 } 11 public String getPassword(){ 12 return password; 13 } 14 public void setPassword(String password){ 15 this.password = password; 16 } 17 public String execute(){ 18 return "success"; 19 } 20 21 }
表单中直接提交和set,get同名的参数即可
第二种,DomainModel(或DTO)方式接收
1 package com.starain.action; 2 3 import com.starain.user.*; 4 public class LoginAction{ 5 private User user;//struts2会自己new 6 public String running(){ 7 if (user.getUsername().equals("admin")&&user.getPassword().equals("admin")) { 8 return "success"; 9 } 10 return "error"; 11 } 12 public User getUser(){ 13 return user; 14 } 15 public void setUser(User user){ 16 this.user = user; 17 } 18 19 }
对应的表单提交参数为:对象实例.参数(get,set同名参数)
第三种,DrivenModel方式接收
1 package com.starain.action; 2 import com.opensymphony.xwork2.ActionSupport; 3 import com.opensymphony.xwork2.ModelDriven; 4 import com.starain.user.*; 5 public class LoginAction extends ActionSupport implements ModelDriven<User>{//实现ModelDriven接口,用泛型,否则需要强制类型转换 6 private User user = new User();//用ModelDriven的方式struts2不会自己new了,需要手动new 7 public String running(){ 8 if (user.getUsername().equals("admin")&&user.getPassword().equals("admin")) { 9 return "success"; 10 } 11 return "error"; 12 } 13 public User getUser(){ 14 return user; 15 } 16 public void setUser(User user){ 17 this.user = user; 18 } 19 20 //这个必须有 21 public User getModel() { 22 // TODO Auto-generated method stub 23 return user; 24 } 25 }
表单提交的参数直接和action中get,set同名参数即可
一般有以下五种
1. 用Action 的属性接收参数
2. 使用Domain ModelModel接收参数
3. 使用DTO--DTO--数据传输对象接收参数
4. 使用 ModelDriven接收参数
5. 使用request 对象接收参数