论坛首页 Java企业应用论坛

Struts2接收参数的几种方式

浏览 9124 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-04-12   最后修改:2010-04-13
Struts2接收参数的几种方式:
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
   发表时间:2010-04-12  
最近正在研究struts2 谢谢你的文章,也希望这方面的高手能出几篇在实际应用中的文章。
0 请登录后投票
   发表时间:2010-04-12  
ModelDriven方式确实是挺实用···
0 请登录后投票
   发表时间:2010-04-12  
3、4都是第一次看到
0 请登录后投票
   发表时间:2010-04-12  
tottichen 写道
ModelDriven方式确实是挺实用···

好在哪里 具体给指点下
0 请登录后投票
   发表时间:2010-04-12  
推荐第三、第四种用法,相对主流一点。
0 请登录后投票
   发表时间:2010-04-12  
能够复用model就用model,ModelDriven只处理不能加.传参数的情况,比如flex,js class attribute。dto太麻烦,参数太ugly。
0 请登录后投票
   发表时间:2010-04-13  
07年给学校做项目就用 modeldriver 了。。。
适当使用 还可以
0 请登录后投票
   发表时间:2010-04-13  
常用第二种方法,
user.username在action中不能这么用,应该user.getUsername();
才能取值
0 请登录后投票
   发表时间:2010-04-13  
ModelDriven的时候,往往需要实现prepareable接口,在prepare方法里面预备数据,否则到execute方法里面,拿到的是null值
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics