锁定老帖子 主题:Struts2接收参数的几种方式
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-12
最后修改:2010-04-13
1. 用Action的属性: 在action里面定义要接收的参数,并提供相应的setter,getter,可以和提交参数的名称一致,并不用做数据类型的转换。 如: public class UserAction extends ActionSupport { private String password; pirvate String name; //……对应的setter,getter方法 public void execeute() { System.out.println(name +”:”+passowrd); return “success”; } } 相应提交方式可以用get和post,如:userAction?password=admin&name=admin 2. 使用Domain Model: 在Action里面不存很多的属性,而是用Model层用到的模型,保存它的一个对象 如: public class UserAction extends ActionSupport { private User user; //……对应的setter,getter方法 public void execeute() { System.out.println(user.getName() +”:”+user.getPassowrd()); return “success”; } } 提交参数:userAction?user.password=1&user.name=admin;这里面的user指向Action里面的user。 3. 使用DTO--数据传输对象 它的作用是接收参数,传递参数,并不是项目中的实体类。如用户注册时,会用到确认密码,所以要先把参数接收过来,做处理后,再传递给相应方法去创建User对象。 public class UserDTO { private String name; private String password; private String confirm; //……对应的setter,getter方法 } 可能的Action public class UserAction extends ActionSupport { private UserDTO user; //……对应的setter,getter方法 public void execeute() { if(checkdate(userDTO userDTO) )//检查数据{ newUser(UserDTO userDTO)//创建User对象 System.out.println(user.name +”:”+user.passowrd); return “success”; } return “fail”; } } 提交参数的方式的Domail Model方式的相同。 4.使用ModelDriven: 在创建Action的时候,发现Action实现了ModelDriven接口,去调用 接口的getModel()方法,取到了User。 public class UserAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); //这里要手动的New下 //……对应的setter,getter方法 public void execeute() { System.out.println(user.name +”:”+user.passowrd); return “success”; } @Override public User getModel() { return user; } } 相应提交方式可以用get和post,如:userAction?password=admin&name=admin 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-12
最近正在研究struts2 谢谢你的文章,也希望这方面的高手能出几篇在实际应用中的文章。
|
|
返回顶楼 | |
发表时间:2010-04-12
ModelDriven方式确实是挺实用···
|
|
返回顶楼 | |
发表时间:2010-04-12
3、4都是第一次看到
|
|
返回顶楼 | |
发表时间:2010-04-12
tottichen 写道 ModelDriven方式确实是挺实用···
好在哪里 具体给指点下 |
|
返回顶楼 | |
发表时间:2010-04-12
推荐第三、第四种用法,相对主流一点。
|
|
返回顶楼 | |
发表时间:2010-04-12
能够复用model就用model,ModelDriven只处理不能加.传参数的情况,比如flex,js class attribute。dto太麻烦,参数太ugly。
|
|
返回顶楼 | |
发表时间:2010-04-13
07年给学校做项目就用 modeldriver 了。。。
适当使用 还可以 |
|
返回顶楼 | |
发表时间:2010-04-13
常用第二种方法,
user.username在action中不能这么用,应该user.getUsername(); 才能取值 |
|
返回顶楼 | |
发表时间:2010-04-13
ModelDriven的时候,往往需要实现prepareable接口,在prepare方法里面预备数据,否则到execute方法里面,拿到的是null值
|
|
返回顶楼 | |