Fork me on GitHub

模型驱动封装

--------------------siwuxie095

   

   

   

   

   

   

   

模型驱动封装

   

   

1、模型驱动通过实体类进行数据传递,即 实体类充当了数据模型

   

「实体类封装的属性和表单的属性一一对应」

   

   

   

2、使用模型驱动封装,可以直接把表单数据封装到实体类对象

   

   

   

   

3、具体步骤

   

(1)让 Action 实现 ModelDriven 接口

   

2)在 Action 中创建实体类对象,即 数据模型对象

   

(3)重写接口的 getModel() 方法,返回数据模型对象

   

   

   

4、具体实现

   

1)编写页面

   

data.jsp:

   

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>表单</title>

</head>

<body>

<form action="${pageContext.request.contextPath }/data.action" method="post">

username:<input type="text" name="username"/>

<br/>

password:<input type="password" name="password"/>

<br/>

address:<input type="text" name="address"/>

<br/>

<input type="submit" value="提交"/>

</form>

</body>

</html>

   

   

   

2)编写实体类

   

User.java:

   

package com.siwuxie095.entity;

   

   

// User 实体类

public class User {

   

private String username;

private String password;

private String address;

 

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;

}

 

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

 

@Override

public String toString() {

return "User [username=" + username + ", password=" + password

+ ", address=" + address + "]";

}

 

}

   

   

   

3)编写 Action

   

DataAction.java:

   

package com.siwuxie095.action;

   

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

import com.siwuxie095.entity.User;

   

   

/**

* 使用模型驱动封装获取表单数据

*

* 实现 ModelDriven 接口,并指定泛型为实体类类型

*/

public class DataAction extends ActionSupport implements ModelDriven<User>{

 

/*

* Action 中创建实体类对象,即数据模型对象

*

* 注意:是创建,不是声明

*/

private User user=new User();

 

 

/*

* 重写接口的 getModel() 方法,返回数据模型对象

*

* 返回实体类对象

*/

@Override

public User getModel() {

return user;

}

   

 

@Override

public String execute() throws Exception {

System.out.println(user);

return NONE;

}

   

}

   

   

   

4)配置 Action

   

struts.xml:

   

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

   

<struts>

 

<package name="demo" extends="struts-default" namespace="/">

 

<action name="data" class="com.siwuxie095.action.DataAction"></action>

 

</package>

   

</struts>

   

   

   

5)访问路径

   

http://localhost:8080/工程名/data.jsp

   

   

   

5、使用模型驱动封装属性封装需要注意的问题

   

1)在一个 Action 中获取表单数据,可以使用属性封装,也可以

使用模型驱动封装,但不能同时使用属性封装和模型驱动封装获取

同一个表单数据

   

2)如果同时使用,之后会执行模型驱动封装,不会执行属性封装

   

   

   

6模型驱动封装表达式封装的异同

   

1)同:都可以把数据封装到实体类对象中

   

2)异:使用模型驱动封装只能把数据封装到一个实体类对象中,

而使用表达式封装可以把数据封装到多个实体类对象中

   

「前提:一个 Action 中」

   

   

   

   

   

   

   

   

   

【made by siwuxie095】

posted on 2017-08-10 13:53  siwuxie095  阅读(228)  评论(0编辑  收藏  举报

导航