一.属性封装
1.创建User实体类`

package cn.entity;

public class User {
private String username;
private String password; @Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
}
}

2.创建DataDemo2Action类将数据封装到实体类

		User user=new User();
user.setUsername(username);
user.setPassword(password);
System.out.println(user);

或者通过以下方式

package cn.data;

import cn.entity.User;
import com.opensymphony.xwork2.ActionSupport; /**
* 使用属性封装表单数据
* @author zhangshuaihao
*/
public class DateDemo1Action extends ActionSupport {
//1.定义变量
//2.变量的名称要和输入项name相同
private String username;
private String password; public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} //2.生成get和set方法
@Override
public String execute() throws Exception {
System.out.println("username="+username);
System.out.println("password="+password); return NONE;
}
}

通过structs2内部机制,先获取表单中的name属性值,然后与该类中的属性(username/password)进行匹配,如果匹配成功,则会调用set方法,将其封装到实体类对象中

二、模型驱动
1.创建User实体类

package cn.entity;

public class User {
private String username;
private String password; @Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
}
}
import cn.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; /**
* 使用属模型驱动获取表单数据
* 模型驱动能够直接把表单数据封装到实体类对象中去
* @author zhangshuaihao
*/
public class DateDemo2Action extends ActionSupport implements ModelDriven<User> {
//创建对象
//创建要求,要求表单输入项中的name属性值和实体类属性名称一致
private User user=new User();
@Override
public String execute() throws Exception {
System.out.println(user); return NONE;
} @Override
public User getModel() {
//返回创建的对象
return user;
}
}

该模型驱动要实现ModelDriven接口,并且实现其中的getModel()方法,可以直接将属性封装到实体类中
三、表达式封装

在这里插入代码片<form action="${pageContext.request.contextPath}/data3.action" method="post">
username:<input name="user.username" type="text" id="username"><br>
password:<input name="user.password" type="password" id="password"><br>
<input type="submit" name="Submit" value="提交">
</form>
import cn.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; /**
* 使用表达式封装数据
*
* @author zhangshuaihao
*/
public class DateDemo3Action extends ActionSupport {
//1.声明实体类
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Override
public String execute() throws Exception { System.out.println(user);
return NONE;
}
}

注意input标签中的name属性,使用了user.username的形式,该表达式的执行过程为:首先通过getUser方法获取User对象,然后调用User类中的setUsername方法,将属性封装到实体类User中

注意:属性封装和模型驱动封装不能同时使用,如果同时使用,属性封装中的数据为null,只会调用模型驱动封装,一般来说三种封装方式经常使用模型驱动封装

Struts2封装获取表单数据方式的更多相关文章

  1. Struts2_day02--Struts2封装获取表单数据方式

    Struts2封装获取表单数据方式 原始方式获取表单封装到实体类对象 属性封装(会用) 1 直接把表单提交属性封装到action的属性里面 2 实现步骤 (1)在action成员变量位置定义变量 - ...

  2. struts2 封装获取表单数据的方式

    一.属性封装 1.在action中设置成员变量,变量名与表单中的name属性值相同 2.生成变量的set方法 实例 获取用户输入的用户名和密码 jsp页面 java代码 二.模型驱动(常用) 1.ac ...

  3. strus2中获取表单数据 两种方式 属性驱动 和模型驱动

    strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...

  4. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  5. 初学者易上手的SSH-struts2 02Action获取表单数据-通配符

    在上一章中,我们已经搭建好了struts2的一个开发环境,那么这一章就来做一个简单的登录功能,以及介绍和使用struts2里面一个重要的东西-通配符. 第一步,在WebContent下面新建一个log ...

  6. SSM获取表单数据插入数据库并返回插入记录的ID值

    以下指示插入操作以及获取记录值的ID的部分操作代码!!! 首先是简单的表单实现 <%@ page language="java" contentType="text ...

  7. servlet获取表单数据的方式和编码方式

    .在servlet中获取表单的数据的几种方式  1>request.getParameter(“name”)://获取指定名称的值,返回值类型是一个字符串  2>request.getPa ...

  8. Struct2中三种获取表单数据的方式

    1.使用ActionContext类 //1获取ActionContext对象 ActionContext context = ActionContext.getContext(); //2.调用方法 ...

  9. Struts2 03---数据封装+获取表单提交数据

        Struts的数据封装分为三种:属性封装,模型驱动,表达式封装.下面以获取表单提交数据来简单介绍一下Struts的数据封装. <form action="loginlogin. ...

随机推荐

  1. 理解HMM算法

    长这样: 理解的前提: (1)状态:生成观测值的变量(上图中的"吃"和"睡"). (2)观测值:状态乘上输出概率对应的输出(上图中的橙色节点). (3)输出概率 ...

  2. IDW插值得到降水量分布图

    4 具体思路 4.1 加载数据 (1)点击[添加数据],选择"中国地面气候资料国际交换站数据集台站信息.csv"."省份.shp"和"2011年中国地 ...

  3. Ubuntu 16.04 更改系统语言为简体中文

    镜像下载.域名解析.时间同步请点击阿里巴巴开源镜像站 一.安装时报错 原因:以访客的身份进入的会报错,改为管理员进入即可. ps:有时候往往一点小细节也会造成大问题,但是我们要善于排错. 注:可以看到 ...

  4. Git 、运算符一 JAVA day10

    不知不觉已是第十天学习,学习时时间往往过的很快.废话不多说进入正题: 今天开始学习JAVA中的运算符 一.基本运算符 +,-,*,/.%:加.减.乘.除,余数 下面用IDEA来举例说明 基本运算符 p ...

  5. TiDB 5.0认证指南之PCTA PCTP

    1. TiDB简介 TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analyt ...

  6. 面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)

    https://zhuanlan.zhihu.com/p/99150038   ​ 西北工业大学 计算机技术硕士在读 在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的 ...

  7. jQuery--事件绑定|委派|切换

    一.事件的绑定 1.事件的绑定介绍 事件绑定: bind(type,fn) 给当前对象绑定一个事件.例如:A.bind("click",fn);类似A.click(fn) unbi ...

  8. dos 循环读取当前文件夹下的视频名字

    @echo off for /R %%i in (*.mp4) do ( echo -isma %%~nxi ) pause

  9. springboot-数据库访问之jpa

    什么是springDate? springData的作用: 整体简化的架构: JPA :Java Persistence API 如果没有springData 我们需要去学每一种对应的jpa实现, 有 ...

  10. 什么是 Spring 引导的执行器?

    Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序 的当前状态.在执行器的帮助下,您可以检查各种指标并监控您的应用程序.