Struts2 03---数据封装+获取表单提交数据
Struts的数据封装分为三种:属性封装,模型驱动,表达式封装。下面以获取表单提交数据来简单介绍一下Struts的数据封装。
<form action="loginlogin.action" method="post">
用户名:<input name="username" ><br>
密码:<input name="pwd" type="password"><br>
<input type="submit" value="登录">
</form>
使用第一种方法,属性封装来获取数据的时候需要将form表单内的两个name值进行封装:
package com.action; import com.opensymphony.xwork2.ActionSupport;
import com.sun.net.httpserver.Authenticator.Success;
public class LoginbAction extends ActionSupport {
private String username;
private String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String execute() throws Exception {
System.out.println("获取到的表单数据:"+username+"---"+pwd);
return SUCCESS;
}
}
第二种方式,模型驱动;
1.创建实体类(属性名必须和表单的name属性值一模一样)
package com.entity; /**
*
* @ClassName: ELogin
* @Description: 模型驱动的实体层
* @author Administrator
* @date 2017年10月10日 下午6:46:00
*
*/
public class ELogin {
private String username;
private String pwd; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} }
2.action实现ModelDriven接口, 实例化一个对象,实现ModelDriven接口的getModel方法,方法返回的是实例化对象的变量名。
package com.action; import com.entity.ELogin;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
*
* @ClassName: LoginAction
* @Description: 模型驱动 通过反射获取提交过来的属性值
* @author Administrator
* @date 2017年10月10日 下午6:44:46
*
*/
public class LoginAction extends ActionSupport implements ModelDriven<ELogin>{ public String login(){
System.out.println("获取到表单数据:"+elogin.getUsername()+"---"+elogin.getPwd());
return NONE;
} @Override
public String execute() throws Exception { return super.execute();
} private ELogin elogin=new ELogin();
@Override
public ELogin getModel() { return elogin;
} }
第三种方式:表达式封装;
1.和模型驱动一样,表达式封装也需要创建一个实体类。
2.在LoginAAction类中声明实体类(这里不需要实例化),再生成实体类对象名的set和get的方法。
package com.action; import com.entity.ELogin;
import com.opensymphony.xwork2.ActionSupport; /**
*
* @ClassName: LoginaAction
* @Description: 表达式封装
* @author py
* @date 2017年10月10日 下午6:48:11
*
*/
public class LoginaAction extends ActionSupport{ private ELogin elogin; public ELogin getElogin() {
return elogin;
}
public void setElogin(ELogin elogin) {
this.elogin = elogin;
}
@Override
public String execute() throws Exception {
System.out.println("获取到表单数据:"+elogin.getUsername()+"---"+elogin.getPwd());
return SUCCESS;
}
}
3.和模型驱动不同的是,这里的表单name属性需要做一个修改,要用对象变量名.属性名。
<form action="newlogin.action" method="post">
用户名:<input name="elogin.username" ><br>
密码:<input name="elogin.pwd" type="password"><br>
<input type="submit" value="登录">
</form>
这三种方式都可以获取到表单提交的值。但是要注意的是:在一个action中不能给对同一个表单使用属性封装和模型封装,如果使用只会执行模型驱动封装。
表达式封装和模型封装的相同点以及不同点:
相同点:
都可以把数据封装到实体类中
不同点:
模型封装只能够把数据封装到一个实体类中,在一个action里面只能实现一次ModelDriven的接口所以模型封装只会封装一个到一个实体类中,
表达式封装可以吧数据封装到多个对象中。
Struts2 03---数据封装+获取表单提交数据的更多相关文章
- 在Action中获取表单提交数据
-----------------siwuxie095 在 Action 中获取表单提交数据 1.之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象 的方法获取数据 2 ...
- Struts2_day02--Action获取表单提交数据
Action获取表单提交数据 1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap 2 ...
- Layui 获取表单提交数据
HTML<div class="layui-card-header layuiadmin-card-header-auto"> <form class=" ...
- koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据
1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...
- koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...
- springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据
springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...
- 前端表单提交数据~php获取表单内容
上图代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- request接收表单提交数据及其中文参数乱码问题
一.request接收表单提交数据: getParameter(String)方法(常用) getParameterValues(String name)方法(常用) getParameterMap( ...
- HTTP通信模拟表单提交数据
前面记录过一篇关于http通信,发送数据的文章:http://www.cnblogs.com/hyyq/p/7089040.html,今天要记录的是如何通过http模拟表单提交数据. 一.通过GET请 ...
随机推荐
- 团队作业4---第一次项目冲刺(ALpha)版本 第五天
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 a.完成所有基础功能 b.正在进行测试调试 四.困难与问题 1.根据测试需求功能,部分基础功能不能实现,性能不达标,后续已完成 ...
- 201521123080《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1) 1.1 实验总结 在covnertS ...
- 201521123058 java第六次作业
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...
- 201521123117 《Java程序设计》第3周学习总结
1. 本周学习总结: 2. 书面作业 Q1:代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 201521123109《java程序设计》第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自 ...
- JavaSE(十)之Map总结
上一篇是总结了Collection接口的各种实现类,这一篇我将分享的是Map的总结,希望大家点评! 一.Map接口 1.1.为什么Collection不能满足集合的所有功能? Collection接口 ...
- Python学习笔记010_迭代器_生成器
迭代器 迭代就类似于循环,每次重复的过程被称为迭代的过程,每次迭代的结果将被用来作为下一次迭代的初始值,提供迭代方法的容器被称为迭代器. 常见的迭代器有 (列表.元祖.字典.字符串.文件 等),通常 ...
- EGit使用教程:第一篇 添加工程到版本控制
配置 确定身份 当每次提交的时候,Git需要跟踪这次提交,确认是哪个用户提交的.用户由 user.name 和 user.email 组成,这个信息包含在 ~/.gitconfig 文件中. ~ 代表 ...
- Numpy中Meshgrid函数介绍及2种应用场景
近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法.但总觉得印象不深刻,不是太了解meshgrid的应用场景.所以,本文将进一步介绍Numpy中meshgrid的用法 ...
- 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找
题目: 写这题花了我一上午时间. 下面是本人(zhangjiuding)的思考过程: 首先想到的是三行,每一行一定要走到. 大概是这样一张图 每一行长度最少为1.即第一行(i -1) >= 1, ...