Struts2第二天

今天内容

1 结果页面配置
(1)全局结果页面
(2)局部结果页面
- 配置全局也配置局部,最终局部为准

(3)result标签type属性
- 默认值 dispatcher做转发
- redirect做重定向
- chain:转发到action
- redirectAction:重定向到action

2 在action获取表单提交数据
(1)使用ActionContext类获取
(2)使用ServletActionContext类获取
(3)使用接口注入方式获取
- 使用ServletActionContext类操作域对象

3 struts2提供获取表单数据方式
(1)属性封装
- 定义变量,变量和表单输入项name属性值一样,生成get和set方法
(2)模型驱动封装(重点)
- 实现接口,实现接口里面的方法,表单输入项name属性值和实体类属性名称一样
- (3)表达式封装
(4)表达式封装和模型驱动封装比较
- 相同点:可以把数据封装到实体类对象里面
- 不同点:表达式封装可以封装到不同的实体类里面

4 struts2获取数据封装到集合中(会用)
(1)封装到list集合
(2)封装到map集合

5 案例-添加客户功能

结果页面配置

全局结果页面

  1. result标签配置action方法的返回值到不同的路径里面
  2. 创建两个action,执行默认的方法execute方法,让两个action的方法都返回success,返回success之后,配置到同一个页面里面
    (1)如果多个action,方法里面返回值相同的,到页面也是相同的,这个时候可以使用全局结果页面配置
    在这里插入图片描述
    (2)在package标签里面配置
    在这里插入图片描述

局部结果页面

在这里插入图片描述
(1)配置全局页面,也配置了局部页面,最终以局部配置为准
在这里插入图片描述

Result标签的type属性

  1. result标签里面除了name属性之外,还有一个属性 type属性
    (1)type属性:如何到路径里面(转发还是重定向)
  2. type属性值
    (1)默认值,做转发操作,值是 dispatcher
    在这里插入图片描述
    在这里插入图片描述
    (2)做重定向操作,值是 redirect
    在这里插入图片描述
    在这里插入图片描述
    (2)这两个值一般针对到页面中配置,配置到其他的action里面
    • chain:转发到action,一般不用,缓存问题
      -
      - redirectAction:重定向到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获取数据
在这里插入图片描述

使用ServletActionContext类获取

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

使用接口注入(了解)

  1. 让action实现接口,为了得到request对象
    在这里插入图片描述

在action操作域对象

1.request、session、servletContext域对象
2.使用ServletActionContext类操作
在这里插入图片描述

Struts2封装获取表单数据方式

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

在这里插入图片描述

属性封装(会用)

1 直接把表单提交属性封装到action的属性里面

2 实现步骤
(1)在action成员变量位置定义变量
- 变量名称和表单输入项的name属性值一样
(2)生成变量的set方法(把set和get方法都写出来)

在这里插入图片描述
在这里插入图片描述
3 使用属性封装获取表单数据到属性里面,不能把数据直接封装到实体类对象里面

模型驱动封装(重点)

1.使用模型驱动方式,可以直接把表单数据封装到实体类对象里面
2.实现步骤
(1)action实现接口 ModelDriven
在这里插入图片描述
(2)实现接口里面的方法 getModel方法

  • 把创建对象返回

(3)在action里面创建实体类对象
在这里插入图片描述


3.使用模型驱动和属性封装注意问题:
(1)在一个action中,获取表单数据可以属性封装,使用模型驱动封装,
不能同时使用属性封装和模型驱动封装获取同一个表单数据
如果同时使用,属性封装得不到值

表达式封装(会用)

1.实现过程
(1)使用表达式封装可以把表单数据封装到实体类对象里面
第一步 在action里面声明实体类
第二步 生成实体类变量的set和get方法
在这里插入图片描述
第三步 在表单输入项的name属性值里面写表达式形式
在这里插入图片描述
2 把表达式封装归类到属性封装里面

比较表达式封装和模型驱动封装

1 使用表达式封装和模型驱动封装都可以把数据封装到实体类对象里面

2 不同点:
(1)使用模型驱动只能把数据封装到一个实体类对象里面
- 在一个action里面不能使用模型驱动把数据封装到不同的实体类对象里面

(2)使用表达式封装可以把数据封装到不同的实体类对象里面

在这里插入图片描述
在这里插入图片描述

封装到集合里面

封装数据到List集合

第一步 在action声明List
第二步 生成list变量的set和get方法
在这里插入图片描述
第三步 在表单输入项里面写表达式
在这里插入图片描述

封装数据到Map集合

第一步 声明map集合
第二步 生成get和set方法
在这里插入图片描述
第三步 在表单输入项的name属性值里面写表达式
在这里插入图片描述

案例-添加客户功能

  1. 模型驱动获取表单数据
    在这里插入图片描述
  2. 在hibernate实现
    在这里插入图片描述
  3. 添加之后到列表页面中,让列表的action执行一次
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值