属性驱动
概述
通过属性(模型)驱动,可以使得Action获取到用户表单所提交的数据。
【属性驱动】
1.概述
所谓属性驱动是指使用类的属性(成员字段)来接收用户提交的数据。
2.实现步骤
- 第一步:创建Action类
- 第二步:添加对应的属性(成员字段)并生成get/set访问器
- 第三步:编写请求处理方法
- 第四步:配置Action
3.示例1 基本类型作为属性
[View]
1 <form action="user/add.action" method="post"> 2 <table> 3 <tr> 4 <th>姓名:</th> 5 <td> 6 <input type="text" name="userName" /> 7 </td> 8 </tr> 9 <tr> 10 <th>帐号:</th> 11 <td> 12 <input type="text" name="account" /> 13 </td> 14 </tr> 15 <tr> 16 <th>密码:</th> 17 <td> 18 <input type="text" name="pwd" /> 19 </td> 20 </tr> 21 <tr> 22 <td> 23 <input type="submit" value="保存" /> 24 </td> 25 </tr> 26 </table> 27 </form>
[Action类]
1 /** 2 * 属性驱动方式获取表单数据 3 * 4 * 将表单提交的数据以Action属性(成员字段)的形式进接收 5 * @author Terry 6 * 7 */ 8 public class UserAction implements Action{ 9 private String userName; 10 private String account; 11 private String pwd; 12 13 /** 14 * 请求处理方法 15 */ 16 @Override 17 public String execute(){ 18 System.out.println("userName = " + userName); 19 System.out.println("account = " + account); 20 System.out.println("pwd = " + pwd); 21 System.out.println("==========================================\n"); 22 return "success"; 23 } 24 25 //get/set访问器 26 }
[配置文件]
1 <package name="UserAction" extends="struts-default" namespace="/user"> 2 <action name="add" class="cn.hl.action.UserAction"> 3 <result>/index.jsp</result> 4 </action> 5 </package>
[执行结果]
4.示例2 引用类型作为属性
[View]
1 <form action="user/add.action" method="post"> 2 <table> 3 <tr> 4 <th>姓名:</th> 5 <td> 6 <input type="text" name="user.userName" /> 7 </td> 8 </tr> 9 <tr> 10 <th>帐号:</th> 11 <td> 12 <input type="text" name=" user.account" /> 13 </td> 14 </tr> 15 <tr> 16 <th>密码:</th> 17 <td> 18 <input type="text" name=" user.pwd" /> 19 </td> 20 </tr> 21 <tr> 22 <td> 23 <input type="submit" value="保存" /> 24 </td> 25 </tr> 26 </table> 27 </form>
[Javabean]
1 public class User { 2 private String userName; 3 private String account; 4 private String pwd; 5 6 public User() { 7 // TODO Auto-generated constructor stub 8 } 9 }
[Action类]
1 public class UserAction2 implements Action{ 2 private User user ; 3 4 /** 5 * 请求处理方法 6 */ 7 @Override 8 public String execute(){ 9 System.out.println(user); 10 System.out.println("==========================================\n"); 11 return "success"; 12 } 13 14 public User getUser() { 15 return user; 16 } 17 18 public void setUser(User user) { 19 this.user = user; 20 } 21 22 }
[配置文件]
1 <action name="add2" class="cn.hl.action.UserAction2"> 2 <result>/update2.jsp</result> 3 </action>
[执行结果]
【注意事项】
- 基本类型作为属性时,属性名(成员字段名)必须和表单中name值一致
- 属性必须提供get/set访问器。否则将无法获取到数据值
- 引用类型作为成员属性时,不需要进行实例化
每接触一个新领域,我就像一块掉进水里的海绵,四面八方的养分都让我不断充实。O(∩_∩)O~