模型驱动封装

来源:互联网 发布:平板电脑安装ubuntu 编辑:程序博客网 时间:2024/06/04 00:28

--------------------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>

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

<title>表单</title>

</head>

<body>

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

username:<inputtype="text"name="username"/>

<br/>

password:<inputtype="password"name="password"/>

<br/>

address:<inputtype="text"name="address"/>

<br/>

<inputtype="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;

}

publicvoid setUsername(String username) {

this.username = username;

}

 

public String getPassword() {

return password;

}

publicvoid setPassword(String password) {

this.password = password;

}

 

public String getAddress() {

return address;

}

publicvoid 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 DataActionextends 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:

  

<?xmlversion="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>

 

<packagename="demo"extends="struts-default"namespace="/">

 

<actionname="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】

原创粉丝点击