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---数据封装+获取表单提交数据的更多相关文章

  1. 在Action中获取表单提交数据

    -----------------siwuxie095 在 Action 中获取表单提交数据 1.之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象 的方法获取数据 2 ...

  2. Struts2_day02--Action获取表单提交数据

    Action获取表单提交数据 1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap 2 ...

  3. Layui 获取表单提交数据

    HTML<div class="layui-card-header layuiadmin-card-header-auto"> <form class=" ...

  4. koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...

  5. koa 基础(十)原生node.js 在 koa 中获取表单提交的数据

    1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...

  6. springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据

    springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...

  7. 前端表单提交数据~php获取表单内容

    上图代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  8. request接收表单提交数据及其中文参数乱码问题

    一.request接收表单提交数据: getParameter(String)方法(常用) getParameterValues(String name)方法(常用) getParameterMap( ...

  9. HTTP通信模拟表单提交数据

    前面记录过一篇关于http通信,发送数据的文章:http://www.cnblogs.com/hyyq/p/7089040.html,今天要记录的是如何通过http模拟表单提交数据. 一.通过GET请 ...

随机推荐

  1. NullpointerException处理

    毫无疑问,空指针NullpointerException是我们最常遇到异常,没有之一! 在刚进入编程职业时,我想,大部分刚进入的同学肯定会受到前辈们的叮咛:一定要防止空指针,这是个低级错误.你们不是? ...

  2. 201521123036 《Java程序设计》第7周学习总结

    本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 answer:用于判断Collect ...

  3. Python[小甲鱼-002用Python设计第一个游戏]

    –Code——————————————————————- print("----------第一个小游戏----------") temp = input("猜一下我现在 ...

  4. 201521123009 《Java程序设计》第11周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 Q1:互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问 ...

  5. panda库------对数据进行操作---合并,转换,拼接

    >>> frame2 addr age name 0 beijing 12 zhang 1 shanghai 24 li 2 hangzhou 24 cao >>> ...

  6. java继承涉及的动/静态绑定及隐藏

    项目中经常会用到java多态这个特性,之前只知道一些皮毛,现在发现自己对它并没有一个系统的认识,想从新梳理下自己的基础库. 看了java编程思想中对象导论,关于继承的描述:java中的类型不仅仅只是描 ...

  7. svn服务器配置与客户端的使用

    1, Apache Subversion 官网下载地址: http://subversion.apache.org/packages.html#windows 官网下载提供的一般都是最新版本的,如果想 ...

  8. 7z命令行 极限压缩指令

    摘抄自http://www.cnblogs.com/qanholas/archive/2011/10/03/2198487.html 7za a -t7z bag.7z "/home/fil ...

  9. AngularJS的运用

      前  言 JRedu AngularJS[1]  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.A ...

  10. hive自定义UDF

    udf udaf udtf 使用方式 hiverc文件 1.jar包放到安装日录下或者指定目录下 2.${HIVE_HOME}/bin目录下有个.hiverc文件,它是隐藏文件. 3.把初始化语句加载 ...