A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-7-13 16:45 编辑

黑马程序员济南】JavaEE就业班同步笔记第三阶段:
Struts-part02


在action获取表单提交数据
使用ActionContext类获取

使用ServletActionContext类获取
1 直接调用ServletActionContext类里面的静态方法实现操作

2 使用表单post提交中,在struts2的action获取数据不会有乱码问题
(1)struts2有常量设置

3 在action操作域对象

使用实现接口方式获取(了解)
1 在action类实现不同的接口


结果页面配置
全局结果页面
1 创建两个action,执行默认的方法 execute方法,默认方法都返回success

(1)上面配置两个action,两个action执行execute方法,两个action的execute方法都返回success,返回之后都到form.jsp页面中,这样写功能没有问题,造成有很多重复配置,使用全局结果页面操作
2 具体配置
(1)action标签所在的package标签里面
(2)使用global-results进行配置

局部结果页面
1 局部结果页面:在action标签里面写result标签进行配置
2 如果配置全局,也配置了局部,最终以局部为准

result标签的type属性
1 result标签作用:在action标签里面配置action的方法返回结果到路径
2 result标签里面有name属性,和方法的返回值一样,进行配置
3 result标签里面有属性 type
(1)type属性作用:因为result标签配置到路径,type属性表示配置如何到路径中(重定向和转发)
(2)type属性值有很多
- 默认值:不写就是这个值,表示转发操作,dispatcher
- 表示重定向操作,redirect
-- 上面的两个值dispatcher、redirect这两个值表示配置到不同的 页面 中
4 演示type属性两个值
(1)dispatcher: 表示的转发操作,默认就是这个值
(2)redirect,表示的重定向操作
在页面中不能获取到request域里面的值



Struts2封装数据操作
使用传统方式封装数据到对象

属性封装
1 把表单提交数据,封装到action里面的属性中
2 具体实现

(1)在action里面定义成员变量
- 成员变量名称和表单输入项的name属性值一样
(2)生成定义的变量set和get方法



模型驱动封装(重点)
1 使用属性封装,把数据封装到action里面的属性中,不能直接把数据封装到对象里面
2 使用模型驱动封装:把直接把表单提交数据封装到实体类对象里面
3 具体实现
第一步 让action类实现接口 ModelDriven
(1)ModelDriven<封装实体类名称>
- dbutils: new BeanHandler<User>(User.class)
第二步 实现接口里面的方法
(1)getModel方法
第三步 在action的成员变量位置,手动创建实体类对象
注意问题
1 在一个action中获取同一个表单提交数据,
(1)可以使用属性封装,可以使用模型驱动,但是这两种方式不能同时使用,
(2)如果同时使用,只会使用到其中的一种,使用模型驱动。


Struts2封装复杂数据(会用)
封装数据到List集合
1 写表单,提交表单之后,把数据封装到action里面list集合中
2 具体实现
第一步 在action里面声明list集合变量,生成get和set方法
第二步 生成list变量的set和get方法
第三步 在页面的表单里面写法

封装数据到Map集合
1 map集合结构 key-value结构
2 实现步骤
第一步 声明map集合变量
第二步 生成map集合变量的set和get方法

第三步 在表单输入项的name属性值写操作

使用属性封装数据到对象(会用)
第一步 在action声明变量,这个变量是实体类变量
(1)private User user;
第二步 生成变量的set和get方法

第三步 在表单输入项里面写表达式


案例-添加客户功能
1 点击新增客户,到添加页面中

2 在添加页面中,输入不同的值,点击保存,提交表单到action
(1)在action使用模型驱动获取表单数据
- 实体类属性名称 和 表单输入项的name属性值一样

(2)调用方法把数据添加到数据库

总结
1 action获取表单数据
(1)使用ActionContext类
(2)使用ServletActionContext类
(3)使用属性封装
(4)使用模型驱动封装(重点)
-  action实现接口,
- 在action创建实体类对象
- 实现接口里面的方法,返回创建对象
- 前提条件:表单输入项的name属性值和实体类属性名称一样
2 结果页面配置
(1)全局和局部结果页面配置
(2)result标签type属性
- 默认值是 dispatcher,转发
- redirect,重定向
3 封装复杂数据(会用)
4 使用属性封装把数据封装到对象里面(会用)

3 个回复

倒序浏览

回帖奖励 +1

多谢大哥分享啊,希望持续更新啊
回复 使用道具 举报

回帖奖励 +1

多谢大哥分享啊,跟进中
回复 使用道具 举报

回帖奖励 +1


黑马币来了,大家加油哦。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马