Struts2中提供了两类数据封装的方式?
* 第二种方式:模型驱动
> 使用模型驱动的方式,也可以把表单中的数据直接封装到一个JavaBean的对象中,并且表单的写法和之前的写法没有区别!
> 编写的页面不需要任何变化,正常编写name属性的值
> 模型驱动的编写步骤:
* 手动实例化JavaBean,即:private User user = new User();
* 必须实现ModelDriven<T>接口,实现getModel()的方法,在getModel()方法中返回user即可!!
1.书写javaBean类User
package com.huida.domain; public class User { 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 toString() { return "User [username=" + username + ", password=" + password + "]"; } }
2.书写RegistAction类:
package com.huida.action1; import com.huida.domain.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /* * 模型驱动 */ //实现的接口中写的类型:封装的是谁,就写谁 public class Regist3Action extends ActionSupport implements ModelDriven<User>{ //属性驱动的时候不需要手动实例化,而模型驱动的时候必须手动实例化 private User user=new User(); public String execute() throws Exception{ System.out.println(user); return NONE; } @Override public User getModel() { return user; } }
3.在struts.xml中进行配置:
<package name="demo" namespace="/" extends="struts-default"> <action name="regist3Action" class="com.huida.action1.Regist3Action"></action> </package>
4.写index.html表单:
<h3>模型驱动封装数据</h3> <form action="${ pageContext.request.contextPath }/regist3Action.action" method="post"> 姓名<input type="text" name="username"/><br/> 密码<input type="text" name="password"/><br/> <input type="submit" value="注册"> </form>
启动服务器,运行index表单,输入姓名和密码,点击注册,在控制台输出如下表示数据封装成功: