属性驱动封装
来源:互联网 发布:js 获取input的value 编辑:程序博客网 时间:2024/06/13 22:58
-------------------siwuxie095
属性驱动封装
1、Struts2 将数据封装分为两大类:
(1)一类被称为是属性驱动
(2)一类被称为是模型驱动
2、属性驱动封装可以细分成两种:
(1)一种只需要提供属性的set方法即可(简称 属性封装)
(2)一种可以通过表达式直接封装到对象中(简称表达式封装)
(一)属性封装:提供属性的set 方法
1、在Struts2 中可以直接在 Action 中定义各种 Java 基本数据
类型的字段,使这些字段和表单数据相对应,并利用这些字段进
行数据传递
「直接把表单数据封装到Action 的属性中」
2、具体步骤
(1)在 Action 的成员变量位置定义属性
(2)提供属性的 set 方法
「属性名称要和表单输入项的name 属性值一致」
3、具体实现
(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)编写Action
DataAction.java:
package com.siwuxie095.action;
import com.opensymphony.xwork2.ActionSupport;
/**
*使用属性封装获取表单数据
*/
public class DataActionextends ActionSupport {
/*
* (1)在 Action的成员变量位置定义属性
*
*属性名称要和表单输入项的 name属性值一致
*/
private String username;
private String password;
private String address;
/*
* (2)提供属性的 set方法
*
*其实只需要提供 set方法即可,因为
*是自动生成,所以顺便生成 get方法
*/
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 execute()throws Exception {
System.out.println(username+"-"+password+"-"+address);
return NONE;
}
}
(3)配置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>
(4)访问路径
http://localhost:8080/工程名/data.jsp
4、问题与缺陷
如果要表单数据很多,那么Action 的属性也会变得很多,再加上
属性有对应的getter 和 setter 方法,从而导致 Action 的代码很
庞大,再在Action 中编写业务逻辑的代码时,会使 Action 非常
臃肿,不够简洁
「表单数据只是封装到属性中,并没有封装到对象中」
5、解决方案
把属性和对应的getter 和 setter 方法从 Action 中提取出来,封
装到实体类中,单独作为一个值对象
该对象就是用来封装表单数据的,且可以在多个Action 中使用
「实体类封装的属性和表单的属性一一对应」
(二)表达式封装:页面提供 OGNL表达式
1、表达式封装可以把表单数据直接封装到实体类对象中
2、具体步骤
(1)在 Action 中声明实体类对象
(2)提供实体类对象的 get 和 set 方法
(3)在表单输入项的name 属性值处写OGNL 表达式
3、具体实现
(1)编写实体类
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 + "]";
}
}
(2)编写Action
DataxAction.java:
package com.siwuxie095.action;
import com.opensymphony.xwork2.ActionSupport;
import com.siwuxie095.entity.User;
/**
*使用表达式封装获取表单数据
*/
public class DataxActionextends ActionSupport {
/*
* (1)在 Action中声明实体类对象
*
*注意:是声明,不是创建,即不需要 new
*/
private User user;
/*
* (2)提供实体类对象的 get和 set方法
*/
public User getUser() {
return user;
}
publicvoid setUser(User user) {
this.user = user;
}
@Override
public String execute()throws Exception {
System.out.println(user);
return NONE;
}
}
(3)配置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="datax"class="com.siwuxie095.action.DataxAction"></action>
</package>
</struts>
(4)编写页面
datax.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>
<!--
(3)在表单输入项的 name属性值处写 OGNL表达式
user.username的 user,即在 Action 中声明的实体类对象
-->
<formaction="${pageContext.request.contextPath }/datax.action"method="post">
username:<inputtype="text"name="user.username"/>
<br/>
password:<inputtype="password"name="user.password"/>
<br/>
address:<inputtype="text"name="user.address"/>
<br/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
(5)访问路径
http://localhost:8080/工程名/datax.jsp
【made by siwuxie095】
- 属性驱动封装
- struts2_day02_09-属性封装操作_10-模型驱动封装操作_11-使用属性封装和模型驱动封装注意问题
- struts学习(四)—属性封装、模型驱动封装和表达式封装
- Struts2属性驱动封装(了),需要使用ognl表达式
- 属性封装
- 属性封装
- 封装(驱动处理)
- 模型驱动封装
- C#的“属性”封装
- Delta3D 属性封装 分析
- 私有属性与封装
- 属性的封装
- 属性封装和继承
- 属性封装以及继承
- 属性的封装
- C# 封装-属性
- 详解属性封装
- Java之属性封装
- C++ 复习——关于字节
- vscode集成git bash
- javascript实现输入框不可编辑
- leetcode 201. Bitwise AND of Numbers Range
- 使用MIB来监控你的应用(tuxedo mib)
- 属性驱动封装
- Struts2+Spring+Hibernate+Jbpm技术实现Oa(Office Automation)办公系统第一天框架搭建
- dns2
- 【SpringMVC-004】idea创建SpringMVC项目傻瓜教程-REST简介
- hdu6012Lotus and Horticulture离散化线性取最大值
- Ubuntu 16.04+OpenFace的配置和简单人脸检测
- Java并发编程:线程池的使用
- Superchaeger注册码(激活码)
- Shell 要点记录