属性驱动

概述

通过属性(模型)驱动,可以使得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访问器。否则将无法获取到数据值
  • 引用类型作为成员属性时,不需要进行实例化

猜你喜欢

转载自www.cnblogs.com/zhzcode/p/9897152.html