Struts2-获取客户端请求参数

Struts2是一个优秀的MVC(Model-View-Controller)框架,其中客户端请求参数在MVC架构中作为Model的属性存在。Struts2框架有两种方式获取客户端请求的参数。

1、通过属性驱动的方式获取客户端请求的参数(将Action类作为Model的方式):

(1)将POJO类作为Action类的属性,并在Action类中提供getter/setter方法:

Action类代码如下:

public class UserAction extends ActionSupport{

	private UserBean userBean;

	public UserBean getUserBean() {
		return userBean;
	}

	public void setUserBean(UserBean userBean) {
		this.userBean = userBean;
	}
	
}

其中UserBean的代码如下:

public class UserBean {

	private String username;

	private String password;

	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;
	}
}

jsp页面代码如下:

<form action="user.action" method="POST">
    	用户名:<input type="text" name="userBean.username"><br/>
    	密码:<input type="password" name="userBean.password"/><br/>
    	<input type="submit" value="提交"/>
</form>

(2)将客户端请求的参数名作为Action类的属性,并在Action类中提供getter/setter方法:

public class UserAction extends ActionSupport {

	private String username;
	
	private String password;

	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;
	}

}

jsp页面代码如下:

<form action="user.action" method="POST">
    	用户名:<input type="text" name="username"><br/>
    	密码:<input type="password" name="password"/><br/>
    	<input type="submit" value="提交"/>
</form>

(3)将客户端请求的参数封装到List集合中,作为Action类的属性,并在Action类中提供getter/setter方法:

public class UserAction extends ActionSupport{

	private List<UserBean> userList;

	public List<UserBean> getUserList() {
		return userList;
	}

	public void setUserList(List<UserBean> userList) {
		this.userList = userList;
	}
	
}

jsp页面代码如下:

<form action="user.action" method="POST">
    	用户名1:<input type="text" name="userList[0].username"><br/>
    	密码1:<input type="password" name="userList[0].password"/><br/>
    	用户名2:<input type="text" name="userList[1].username"><br/>
    	密码2:<input type="password" name="userList[1].password"/><br/>
    	<input type="submit" value="提交"/>
</form>

(4)将客户端请求的参数封装到Map集合中,作为Action类的属性,并在Action类中提供getter/setter方法:

public class UserAction extends ActionSupport {

	private Map<String, UserBean> userMap;

	public Map<String, UserBean> getUserMap() {
		return userMap;
	}

	public void setUserMap(Map<String, UserBean> userMap) {
		this.userMap = userMap;
	}

}

jsp页面代码如下:

<form action="user.action" method="POST">
    	用户名1:<input type="text" name="userMap['one'].username"><br/>
    	密码1:<input type="password" name="userMap['one'].password"/><br/>
    	用户名2:<input type="text" name="userMap['two'].username"><br/>
    	密码2:<input type="password" name="userMap['two'].password"/><br/>
    	<input type="submit" value="提交"/>
</form>

2、通过模型驱动的方式获取客户端请求的参数(将POJO类作为Model的方式):

让Action类实现com.opensymphony.xwork2.ModelDriven<T>接口,并实例化一个POJO类,将实例化的POJO类对象通过getModel方法返回。

public class User6Action extends ActionSupport implements ModelDriven<UserBean>{

	private UserBean userBean = new UserBean();
	
	public UserBean getModel() {
		return userBean;
	}

}

jsp页面代码如下:

<form action="user.action" method="POST">
    	用户名:<input type="text" name="username"><br/>
    	密码:<input type="password" name="password"/><br/>
    	<input type="submit" value="提交"/>
</form>

优点:解决了属性驱动存在的问题,缺点:一次只能封装一个model对象。


总结:模型驱动在开发中使用比较多,当然模型驱动也可以结合属性驱动一起使用。
















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值