Struts2_day02
一、内容大纲
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)上面两个值dispatcher、redirect,这两个值一般针对到页面中配置,
配置到其他的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执行一次

参考资料
《黑马程序员》
Struts2_day02的更多相关文章
- Struts2_day02讲义_使用Struts完成对客户的新增操作
- tomcat中项目后有括号
引入他人项目时,由于报错,copy本地workspace下其他项目的 .settings和.project到该项目路径下 结果Eclipse 的 Server 中出现了 aaa(bbb)的情况 并且 ...
- Struts框架之结果页面的跳转
1. 结果页面存在两种方式 * 全局结果页面(有很多时候我们会跳转到同一页面,所以我们可以配置一个全局结果页面,不管什么情况都会跳转到这个页面) > 条件:如果<package>包中 ...
- struts2框架之自定义拦截器和配置
struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3 ...
- Struts2_day02--课程安排_结果页面配置
Struts2_day02 上节内容 今天内容 结果页面配置 全局结果页面 局部结果页面 Result标签的type属性 Action获取表单提交数据 使用ActionContext类获取 使用Ser ...
- (转)Struts2访问Servlet的API及......
http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...
随机推荐
- 阿里(蚂蚁,菜鸟)+百度+网易面经(JAVA)
本人综述: 本人本科和硕士均是毕业于普通的双非院校,参加过ACM竞赛,阿里面了三次全被拒了,网易收到offer. 阿里面试: 阿里的面试问的都是很基础的东西,如操作系统的简单问题,计算机网络的基本问题 ...
- TimelineJS JSON 数据格式 - 译文 [原创]
TimelineJS 是用于绘制时间轴的 Javascript 开源脚本,目前是 TimelineJS3 版.参阅 https://github.com/NUKnightLab/TimelineJS3 ...
- 实战重现隐藏在A标签_blank下的危险漏洞,简略说明noopener的作用
前几日,在看阮一峰老师的博客文章中,发现了这么一篇 .标题为 <target = "_blank" 的危险性(英文)>.这篇文章同事看过之后因为不理解其中的危险之处,念 ...
- Java 8 新特性---------Stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...
- webWorker
一.webWorker之初体验 在"setTimeout那些事儿"中,说到JavaScript是单线程.也就是同一时间只能做同一事情. 也好理解,作为浏览器脚本语言,如果JavaS ...
- Leetcode题库——36.有效的数独
@author: ZZQ @software: PyCharm @file: leetcode36_isValidSudoku.py @time: 2018/11/19 19:27 要求:判断一个 9 ...
- 团队作业8——测试与发布(Beta阶段)目录
团队作业8——测试与发布(Beta阶段) http://www.cnblogs.com/zy-96/p/8053097.html 团队作业8——测试与发布(Beta阶段)之展示博客 http://ww ...
- Beta吐槽
目录 感想 管理团队 推进项目 pm吐槽 开发 经过我慎重的考虑,我jio得,Beta版本的吐槽还是不能少. 感想 管理团队 这学期十分庆幸成为我们这个这么优秀的团队的pm.身在pm的位置上经历这么一 ...
- WBS功能分解及甘特图
产品 一级子功能 二级子功能 三级子功能 时间(小时) 食物链教学工具 属性面板 功能按键 选择环境 1 自定义生物 2 生物连线与删除 5 显示食物链 1 ...
- Maven 学习笔记——Maven和Eclipse(2)
前面已经配置好Maven的环境和本地仓库已经准备好了,下面我们通过Eclipse创建Maven项目. 1.安装Maven集成于Eclipse IDE (Eclipse的版本中如果已经集成了Maven插 ...