SSH学习之Struts2获取表单数据

回忆

之前看了看自己出现的代码问题,为什么会出现span标签?原来是因为我在添加代码的时候更改了代码的样式,这样的问题以后会在意的。在上一篇中介绍了SSH学习之Struts2中的Action,现在就介绍一下如何从前台获取表单数据。

为什么需要讲解

在学习Servlet阶段,我们知道是使用原始的Servlet语句通过HtttpServletRequest对象获取前台表单数据。但是如果我们需要获取的表单数据太多的话,使用request对象就显得代码多余。所以,Struts2的框架中提供了自己获取表单数据的方法:属性封装模型驱动。目的是为了减少开发人员的代码量。

属性封装

属性封装主要的特点是提供get方法,不过最好也提供set方法。这是不需要我们自己写代码获取表单数据的,而是Struts2自身带有的一种机制。其底层代码也是原始的Servlet代码,只是Struts2将其进行了封装而已。注意name属性值和Action中的字段要相同,否则会抓取失败
前台:
<form action="${pageContext.request.contextPath }/testAttribute.action" method="post">
    	<label>用户名:</label><input type="text" name="username"><br>
    	<label>密码:</label><input type="password" name="password"><br>
    	<input type="submit" value="提交">
</form>
后台:
public class TestAttributeAction 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;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(this.getUsername()+","+this.getPassword());
		return NONE;
	}
}

模型驱动ModelDriven(推荐使用)

模型驱动说的也是封装的,他出现的主要目的就是为了减少属性封装中出现的问题,也就是减少Action的代码量,使分层更加清楚。最主要的特点是有一个纯实体类以及实现拦截器。具体步骤:
实体类:

public class User implements Serializable {

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

Action类:必须要实现ModelDriven接口,必须要实例化实体类(new命令),必须返回user对象。

public class TestModelAction extends ActionSupport implements ModelDriven<User> {
	private User user = new User();
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}
	@Override
	public String execute() throws Exception {
		System.out.println(user.getUsername() + "," + user.getPassword());
		return SUCCESS;
	}
}

问题

但是在实际开发中,我们经常遇见确认密码、验证码等功能,那么这些功能怎么实现呢?这就需要验证的概念了。验证下一篇再笔记吧。

多余的话

这是我的理解,多多见谅奋斗






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值