一.属性封装
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. git命令新建远程分支并推送,切换远程地址

    最近记性不好,老是忘记操作命令,记录下一下新建远程分支和切换.删除远程地址的命令: 1.查看当前分支:  git branch 2.查看所有分支:git branch -a 3.切换分支:git ch ...

  2. ActiveMQ 笔记—01

  3. Numpy库基础___一

    ndarray一个强大的N维数组对象Array •ndarray的建立(元素默认浮点数) 可以利用list列表建立ndarray import numpy as np list =[0,1,2,3] ...

  4. Java基础——System类

    System包含几个有用的类字段和方法,因为成员都是静态的所以不能被实例化,可以直接通过类名调用 System类的常用方法: 方法名 说明 public static void exit(int st ...

  5. HTTP 错误 500.21 - Internal Server Error 解决方案【转】

    HTTP 错误 500.21 - Internal Server Error 解决方案:  今天在测试网站的时候,在浏览器中输入http://localhost/时,发生如下错误: HTTP Erro ...

  6. RocketMq基础 看这一篇就够了

    RocketMQ 编译安装 HelloWorld 官方网站 http://rocketmq.apache.org GitHub https://github.com/apache/rocketmq Q ...

  7. hdu5197 DZY Loves Orzing(FFT+分治)

    hdu5197 DZY Loves Orzing(FFT+分治) hdu 题目描述:一个n*n的矩阵里填入1~n^2的数,要求每一排从前往后能看到a[i]个数(类似于身高阻挡视线那种),求方案数. 思 ...

  8. CF1430F Realistic Gameplay (贪心+DP)

    朴素做法暴力DP,O(nk)过不去... 1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 ...

  9. Vue中import和require的对比

    Vue中import和require的对比 一.前言 ​ vue框架想必是我们前端朋友们必学的知识点,说它难也没有那么难,说简单也没有那么简单,主要技术就是那么几个,可是里面的细节很多,有些时候我们会 ...

  10. 学习DNS(二)

    DNS出现及演化 网络出现的早期 是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和w ...