Struts2学习笔记共有三天:
第一天学习重点:
MVC编程思想
Struts2实现的基本原理
Struts2中的跳转问题:
一、MVC编程思想【重点 面试】
核心:人为的将程序划分为3个层次。分别为M、V、C。
M(Model 模型层)模拟现实生活中存在的事物。
V(View 视图层) 可视化的图形界面 用来给用户展示数据
C(Controller 控制层 控制器) 控制整体程序的流程
现有程序中使用MVC
V: HTML +JSP
C: Servlet
M: Service+DAO+Entity
好处:
1、解耦合 降低代码之间的耦合度
2、便于维护
二、框架
概念:软件开发过程中的半成品。
解决了软件开发的通用问题,提供开发效率。
框架 + 业务逻辑 = 程序
三、Struts2框架
概念:MVC开发过程中C层框架,解决控制层存在的问题。
现有控制层Servlet存在的问题:
第一个Struts2框架程序的开发
1、需要框架 半成品 开源框架 开发源代码 免费 www.apache.org
2、框架目录结构
3、搭建开发环境
1、jar包 (核心jar、第三方依赖jar)
2、配置文件 struts.xml
放置位置: src下
webapps
项目
WEB-INF
classes
struts.xml
lib
web.xml
3、初始化配置 让框架生效 web.xml 核心过滤器
4、编程步骤
1、写类 implements Action
覆盖服务方法 String execute()
2、struts.xml配置 配置访问路径
小知识点:
1、Struts2和Servlet对比
Servlet:类型的对象 是单例的 线程不安全 不要创建成员变量
Struts2:类型的对象 每次访问都会创建新的对象 不是单例的
2、Struts2访问形式
http://ip:port/web_name/action的name属性值
http://ip:port/web_name/action的name属性值.action
3、DTD文件配置(在MyEclipse中自动提示)
windowProferences
Struts2中的跳转:【重点】
1、Action到jsp之间的跳转
forward:默认形式
<result name=”” type=”dispatcher”/></result>
redirect:
<result name=”” type=”redirect”/></result>
2、 Action到Action之间的跳转
forward:
<result name=”” type=”chain”/>目标action</result>
redirect:
<result name=”” type=”redirectAction”/>目标action</result>
数据的传递:
工具类:ServletActionContext
获取request和response对象
ServletActionContext.getRequest()
ServletActionContext.getResponse()
package: struts.xml配置文件中标签 代表 包
作用:管理action标签
属性:
name: 包名 随意 名字唯一
extends: 值 固定为 ”struts-default”
namespace: 从访问路径上规划action
后续的访问action形式:
http://ip:port/web_name/namespace/action的name属性值
跨包跳转(Action到Action之间)【重点】
注意:Action到Jsp之间没有跨包跳转 包是Action的一个概念
全局跳转
作用:解决result标签的冗余
原则:要抽取成全局跳转的action ,Action的返回值要相同,
同时,跳转的目标位置也要一致
语法:
注意:
全局跳转 本包有效
一般情况 重构项目使用
全局跳转和action中result同时存在 就近 action内部优先
成员变量接收参数
注意:提供和传递数据时key同名的成员变量
为成员变量提供get set方法
接收零散数据(八种基本类型+String+Date)
接收对象类型数据
Action:
提供一个对象类型的成员变量
页面 为成员变量的属性赋值
传递数据key 成员变量名字.属性
接收数组或者集合类型(同零散变量的接收)
提供同名的成员变量,提供setget方法即可
注意 成员变量的类型 是数组或者集合