Struts第四天

Action 获取表单提交

结果页面配置

全局结果页面配置
  1. result 标签配置 action 方法的返回值到不同的路径里面;
  2. 创建两个 action,执行默认的方法 execute方法,让两个 action 的方法都返回 success,返回success之后,配置到同一个页面在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (1)如果多个 action ,方法里面返回值相同的,到页面也是相同的,这个时候可以使用全局结果页面配置在这里插入图片描述
局部结果页面配置
  1. 配置全局页面,也配置了局部页面,最终以局部配置为准在这里插入图片描述
result标签的type属性
  1. result 标签里面除了 name 属性之外,还有一个 type属性
    (1)type 属性:如何到路径里面(转发还是重定向)
  2. type属性值
    (1)默认值,做 转发操作,值为 dispatcher
    在这里插入图片描述
    (2)做重定向操作,值是 redirect
    在这里插入图片描述
    (3)上面两个值 dispatcher、 redirect,这两个值一般针对页面中配置,配置到其他的action里面
    (4)chain:转发到action, 一般不用,缓存问题
    (2)redireAction:重定向到action

在这里插入图片描述

Action 获取表单数据

  1. 之前 web 阶段,提交表单 到 servlet 里面,在 servlet 里面使用 request 对象里面的方法获取,getParameter,getParameterMap
  2. 提交表单到 action,但是 action没有 request对象,不能直接使用 request 对象
  3. action 获取表单提交数据主要三种方式
    (1)使用 ActionContext类
    (2)使用 ServletActionContext类
    (3)使用接口注入方式(一般不用)
使用 ActionContext类

在这里插入图片描述
(1) 因为这个方法不是静态的方法,需要创建 ActionContext 类的最新
(2)这个 ActionContext 类对象不是 new 出来的在这里插入图片描述

  1. 具体演示
    (1)创建表单,提交表单到 action 里面
    (2)在 action 使用 ActionContext 获取数据
    form1.jsp
    在这里插入图片描述
    Form1DemoAction.java
    在这里插入图片描述
    struts.xml
    在这里插入图片描述
使用ServletActionContext类

在这里插入图片描述
(1)调用类里面静态方法,得到 request 对象
Form2DemoAction.java
在这里插入图片描述

使用接口注入
  1. 让 action 实现接口, 为了得到 request
    Form3DemoAction.java
    在这里插入图片描述
在 action 操作域对象
  1. request 、session 、servletContext 域对象
  2. 使用 servletActionContext 类操作
    在这里插入图片描述

Struts2 封装获取表单数据方式

原始方法获取表单封装到实体类对象

实体类User.java
在这里插入图片描述
Form4DemoAction.java
在这里插入图片描述

属性封装
  1. 直接把表达提交属性封装到 action 的属性里面
  2. 实现步骤
    (1)在 action 成员变量位置定义变量
    变量名称和表单输入项的name 属性值一样
    (2)生成变量的 set 方法(把 set 和 get 方法都写出来)
    在这里插入图片描述
  3. 使用属性封装获取表单数据到属性里面,不能把数据直接封装到实体类对象里面
模型驱动封装(重点)
  1. 使用模型驱动方式,可以直接把表单数据封装到实体类对象里面
  2. 实现步骤
    (1)action 实现接口 ModelDriven
    ModelDriven<填实体类名>
    在这里插入图片描述
    (2)实现接口里面的方法 getModel 方法
    把创建对象返回
    在这里插入图片描述
    (3)在 action 里面创建实体类对象
  3. 使用模型驱动和属性封装注意问题:
    (1)在一个 action 中,获取表达数据可以属性封装,也可以使用模型驱动封装,但是不能同时使用属性封装和模型驱动封装 得到同一个 表达 数据
    如果同时使用,只会执行模型驱动封装
表达式封装(会用)
  1. 实现过程
    (1)使用表达式封装可以把表单数据封装到实体类对象里面
    第一步 在 action 里面声明实体类
    在这里插入图片描述
    第二步 生成实体类变量的 set 和 get 方法
    在这里插入图片描述
    第三步 在表单输入项的 name 属性值里面写表达式形式
    在这里插入图片描述
  2. 表达式封装 归类到 属性封装
比较 表达式封装 和 模型驱动封装
  1. 使用表达式封装和模型驱动封装都可以把数据封装到实体类对象里面
  2. 不同点:
    (1)使用模型驱动只能把数据封装到一个实体类对象里面
    在一个 action 里面不能使用模型驱动把数据封装到不同的实体类对象里面
    (2)使用表达式封装可以把数据封装到不同的实体类对象里面

以上的代码需要自己做一些小修改

struts.xml 跟 form1.jsp 修改可以参考 使用 ActionContext类 里面的具体演示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值