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

  1. <form action="loginlogin.action" method="post">
  2. 用户名:<input name="username" ><br>
  3. 密码:<input name="pwd" type="password"><br>
  4. <input type="submit" value="登录">
  5. </form>

  使用第一种方法,属性封装来获取数据的时候需要将form表单内的两个name值进行封装:

  1. package com.action;
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import com.sun.net.httpserver.Authenticator.Success;
  1. public class LoginbAction extends ActionSupport {
  2. private String username;
  3. private String pwd;
  4.  
  5. public String getUsername() {
  6. return username;
  7. }
  8.  
  9. public void setUsername(String username) {
  10. this.username = username;
  11. }
  12.  
  13. public String getPwd() {
  14. return pwd;
  15. }
  16.  
  17. public void setPwd(String pwd) {
  18. this.pwd = pwd;
  19. }
  20.  
  21. @Override
  22. public String execute() throws Exception {
  23. System.out.println("获取到的表单数据:"+username+"---"+pwd);
  24. return SUCCESS;
  25. }
  26. }

第二种方式,模型驱动;

 1.创建实体类(属性名必须和表单的name属性值一模一样)

  1. package com.entity;
  2.  
  3. /**
  4. *
  5. * @ClassName: ELogin
  6. * @Description: 模型驱动的实体层
  7. * @author Administrator
  8. * @date 2017年10月10日 下午6:46:00
  9. *
  10. */
  11. public class ELogin {
  12. private String username;
  13. private String pwd;
  14.  
  15. public String getUsername() {
  16. return username;
  17. }
  18.  
  19. public void setUsername(String username) {
  20. this.username = username;
  21. }
  22.  
  23. public String getPwd() {
  24. return pwd;
  25. }
  26.  
  27. public void setPwd(String pwd) {
  28. this.pwd = pwd;
  29. }
  30.  
  31. }

2.action实现ModelDriven接口, 实例化一个对象,实现ModelDriven接口的getModel方法,方法返回的是实例化对象的变量名。

  1. package com.action;
  2.  
  3. import com.entity.ELogin;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. import com.opensymphony.xwork2.ModelDriven;
  6. /**
  7. *
  8. * @ClassName: LoginAction
  9. * @Description: 模型驱动 通过反射获取提交过来的属性值
  10. * @author Administrator
  11. * @date 2017年10月10日 下午6:44:46
  12. *
  13. */
  14. public class LoginAction extends ActionSupport implements ModelDriven<ELogin>{
  15.  
  16. public String login(){
  17. System.out.println("获取到表单数据:"+elogin.getUsername()+"---"+elogin.getPwd());
  18. return NONE;
  19. }
  20.  
  21. @Override
  22. public String execute() throws Exception {
  23.  
  24. return super.execute();
  25. }
  26.  
  27. private ELogin elogin=new ELogin();
  28. @Override
  29. public ELogin getModel() {
  30.  
  31. return elogin;
  32. }
  33.  
  34. }

第三种方式:表达式封装;

1.和模型驱动一样,表达式封装也需要创建一个实体类。

2.在LoginAAction类中声明实体类(这里不需要实例化),再生成实体类对象名的set和get的方法。

  1. package com.action;
  2.  
  3. import com.entity.ELogin;
  4. import com.opensymphony.xwork2.ActionSupport;
  5.  
  6. /**
  7. *
  8. * @ClassName: LoginaAction
  9. * @Description: 表达式封装
  10. * @author py
  11. * @date 2017年10月10日 下午6:48:11
  12. *
  13. */
  14. public class LoginaAction extends ActionSupport{
  15.  
  16. private ELogin elogin;
  17.  
  18. public ELogin getElogin() {
  19. return elogin;
  20. }
  21. public void setElogin(ELogin elogin) {
  22. this.elogin = elogin;
  23. }
  24. @Override
  25. public String execute() throws Exception {
  1. System.out.println("获取到表单数据:"+elogin.getUsername()+"---"+elogin.getPwd());
  1. return SUCCESS;
    }
    }

3.和模型驱动不同的是,这里的表单name属性需要做一个修改,要用对象变量名.属性名。

  1. <form action="newlogin.action" method="post">
  2. 用户名:<input name="elogin.username" ><br>
  3. 密码:<input name="elogin.pwd" type="password"><br>
  4. <input type="submit" value="登录">
  5. </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. 转:【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17290021 在http://blog.csdn.net/ns_code/article/ ...

  2. KVM网页管理工具WebVirtMgr部署

    KVM-WebVirtMgr 0ther https://github.com/retspen/webvirtmgr/wiki System Optimization(Only CentOS6.X) ...

  3. 将home多余的空间分配到"/"分区下

    一.操作过程 1.df -h 查看分区大小情况; [root@localhost /]# df -h Filesystem            Size  Used Avail Use% Mount ...

  4. 团队作业4--第一次项目冲刺(Alpha版本)7

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.完成全部基础功能 2.完成一些小改进与优化 四.困难与问题 软件基本是可以运行并且正常使用,但还没有实战过,遇到的问题与困 ...

  5. 201521123029《Java程序设计》第三周学习总结

    1.本周学习总结 2.书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...

  6. 解决"应用程序无法启动,因为应用程序的并行配置不正确"问题

    想必不少人都会遇到题目中的问题.我在一次和舍友一起重装系统的时候变遇到了上述的问题, 经过仔细分析发现电脑会出现上述问题所必要的条件 系统中没有存在合理的运行库文件 所运行的软件是之前重装系统之间留下 ...

  7. 201521123025<<java程序设计>>第9周学习总结

    1. 本周学习总结 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 经常出现Array ...

  8. sql+PHP基础+面向对象基础简单总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  9. 域名解析>>"记录类型" 说明

    (1)A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录. 说明:用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以设置自己域名的二级域名. (2)MX ...

  10. delphi cxrid设置column靠左显示

    1.双击cxgrid控件,选中要设置的column 2.找到properties,将column设置为Textedit,点击左边的加号 3.点击ALignment->Horz选中taleftJu ...