回忆
之前看了看自己出现的代码问题,为什么会出现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;
}
}
问题
但是在实际开发中,我们经常遇见确认密码、验证码等功能,那么这些功能怎么实现呢?这就需要验证的概念了。验证下一篇再笔记吧。
多余的话
这是我的理解,多多见谅
。
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)