学习Struts2框架上册
1.回顾MVC模式
- 根据url绑定对应的Servlet,web.xml
- 获取数据,request.getParameter 类型转换
- Servlet调用biz层,biz调用dao层获取数据转化为业务数据
- 封装数据,request,session,application
- 根据业务处理结果,跳转到对应的试图
V:视图层对应视图组件,通常是指 JSP 页面,也适用于 Velocity、FreeMarker等其他视图显示技术。
M:模型层对应业务逻辑组件,它通常用于实现业务逻辑及与底层数据库的交互等。
C:系统核心控制器为 Struts 2 框架提供的 StrutsPrepareAndExecuteFilter,它是一个起过滤作用的类,能根据请求自动调用相应的 Action。而业务逻辑控制器是开发者自定义的一系列Action,在 Action 中负责调用相应的业务逻辑组件,来完成调用处理。
2. 搭建基本环境
- 去官网下载src.all文件
- 解压出来后去apps里面找到demo, 复制里面的jar包到项目文件中
- 添加struts.xml配置文件
- 配置web.xml,添加struts的过滤器
- 编写Action类,并将其配置到struts.xml中
- 启动项目,访问action
配置文件: 主要参考官网, 其次注意事项:
- 必须要继承struts-default
- 此处完成了url和Java类的映射配置
- 此处完成了视图跳转的控制
3. struts2的工作流程
可以在struts2 的手册里面找到:
4. 包的继承
只要根据包的配置文件那里的名字进行extends属性进行配置
5. 线程安全的工作模式
- 每次请求都会创建一个新的Action对象,与 Servlet是不同的
Servlet是单例的,Action 多例
6. 实现Action的三种方式
第一种就是什么都不做
第二种implement Action
第三种 extends ActionSupport
7. 获取值的方式
1.Action 属性的方式
a)普通属性的方式
b)自定义对象属性的方式
Action 实现ModelDriven的方式
8. struts2访问Servlet的API方法
通过ActionContext进行访问
通过特定的xxxAware接口进行访问
还有
ServletContextAware
ServletResponseAware
9. DMI(Dynamic Method Invocation,DMI)
-
<form action="Action 名字!方法名字">
-
设置method的属性
-
使用通配符(wildcard)
10. Result配置
<result type=""></result>
type里面的属性,chain, dispacher, redirect, redirectAction的区别
- 用是否转发页面和转发Action进行记忆
chain, dispacher是重定向
chain 只能跟action
dispacher只能跟页面
重定向:
redirect都能
redirectAction只能跟Action
实现CRUD和分页 代码如下:
口述总结篇
1.实现的登录操作
1)新建两个jsp
a)logni.jsp
b)ok.jsp
2)新建Servlet
a)判断是否登录操作
b)获取用户名密码,封装成对象
c)输出到控制台
d)跳转ok.jsp
2.什么是框架
1)框架可以提高开发效率
2)它就类似于我们之前写过的工具类
3.什么是struts2框架
1)封装了JSP+Servlet的代码
2)strtus1的名气+webWork的实干=struts2
4.如何学习新的技术
1)到官方网站下载资源
2)搭建环境
a)导入jar包
b)配置文件
c)添加struts2的核心控件
d)写一个HelloAction
e)在struts.xml中配置action
f)访问action进行测试
5.struts2
1)配置文件
a)名字:struts.xml
b)位置:src下面
c)内容
1)package
1)name:b包名
2)namespce:访问路径
3)extends:默认是继承struts-default这包
4)action
a)name:action的访问路径
b)class:action的全类名
c)method:类中的方法名称
d)result
1)name:方法的返回值
2)节点中间的内容:跳转的指定页面
6.Action的实现方式
1)继承ActionSupport(常用)
2)实现Action接口
3)普通Java类
2.在配置文件中没有配置method的属性默认执行execute方法
7.参数传递的三种方式
1)action中直接写属性名称,一定要提供set/get方法,表单中要写属性名称
2)actino中写实体类的对象,一定要提供set/get方法,表单中要写对象.属性(常用)
3)实现ModeDriver接口,实现getModel()方法返回对象,表单中写对象的是属性(常用)
8.action访问ServeltAPI
1)通过ActionContext访问
a)返回的都是map
b)可以方法原生的,但是要调用get(StrutsStatics.HTTP_REQUEST)
2)通过ServeltActionContext访问(常用)
a)返回的都是原生的对象
3)通过实现ServeltXxxxxAware接口
a)返回的都是原生的对象
9.namespace
1)分包的概念,方便维护
10.动态方法调用
1)开启动态方法调用
2)配置文件struts-default.xml
3)属性文件default.properties
4)调用规则
1)user!add(actin名字!方法名称)
2)官方不推荐使用
11.通配符
1)user_add_ok
a)action的名字需要用*来匹配
b)调用那个方法根据规则来走,从{1}开始的
2.动态方法调用
3.普通调用(常用)
12.默认的Action
1)用户在请求没有定义的aciton的时候就会调用默认的action
13.resultType
1)dispatcher
a)只能转发到页面,不能转发到action
2)chain
a)只能转发到action,不能转发到页面
3)redirect
a)既可以重定向到页面又可以重定向到action
4)redirectActin
a)指定重定向到Action
14. .struts.xml可以动态传递参数
1)可以方法值栈中的数据
15.全局的result
1)先到当前的action节点中去找,找不到就到全局里面去找