模型驱动封装
来源:互联网 发布:平板电脑安装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】
- 模型驱动封装
- struts2 模型驱动封装动态参数
- 关于Struts2模型驱动封装的细节
- struts2_day02_09-属性封装操作_10-模型驱动封装操作_11-使用属性封装和模型驱动封装注意问题
- struts学习(四)—属性封装、模型驱动封装和表达式封装
- struts2_day02_12-表达式封装_13-比较表达式封装和模型驱动封装
- OGNL表达式 模型驱动封装数据 获取null的问题
- 驱动模型
- 驱动模型
- 模型驱动
- 模型驱动
- 驱动模型
- 驱动框架,驱动模型
- 封装(驱动处理)
- 属性驱动封装
- 事件模型SOCKET封装
- 封装的EPOLL 模型
- C++封装select模型
- 解决SMARTFORMS 中table 控件单行跨页的问题
- 面试题6:二叉树重构建
- Ohana Cleans Up cf-554B【思维】
- mysqlbinlog 时的乱码问题
- GG 。B的搜索技巧?
- 模型驱动封装
- Mi-mimeType识别-bitmap
- 过滤器(Filter)和拦截器(Interceptor)的区别
- Utuntu的使用
- Android自定义TextView 自定义设置圆角背景色
- STM32 的时钟系统
- 程序调试中的常见问题及解决方法【2017.9.27更新】
- WebView调H5上传文件点击取消时无法再次响应H5上的选择文件事件
- 常见类---Calendar类