Struts2
来源:互联网 发布:乱世佳人电影 知乎 编辑:程序博客网 时间:2024/06/03 10:10
1、参数绑定
struts提供将请求参数自动封装到 pojo对象、集合对象等中,这个过程 就是参数绑定。
struts2提供参数绑定的机制,可以将请求的参数绑定到action类的属性中。
2、属性驱动
属性驱动是struts2提供的一种参数绑定机制,如果按照struts指定的开发规则,自动请求的参数设置(赋值)到struts的action类的属性中。
属性驱动开发规则:
(1)、确定请求参数的名称
(2)、在action类中添加属性,属性名和参数名称一致,并且添加 get/set方法
属性驱动支持不同action类属性类型:包括基本类型(string/int……)、list、map、数组、pojo
3、模型驱动
模型驱动是将请求参数绑定到专门的模型对象中,Action实现ModelDriven接口并指定模型对象类型,模型对象类型即为pojo
4、ognl
对象导航图语言,struts2使用ognl作为表达式,使用ognl表达式可以向对象中赋值、从对象取值。
(1)、表达式
语法:属性.属性.属性..
如果要操作ognl上下文的根对象,不用表达式前边加#,否则 需要添加#
(2)、上下文
OgnlContext,底层是map,提供对象存储的环境。
(3)、根对象
一个上下文只有一个根对象,默认操作的就是根对象。
5、值栈
在struts2中有一个接口,ValueStack,有一个实现类OgnlValueStack。
OgnlValueStack类中包括:CompoundRoot(底层是ArrayList,栈结构)和Map<String,Object> context (OgnlContext)
context中根对象就是CompoundRoot
context的非根对象包括:request、session、application。
Struts2对原来ognl的扩展:
(1)、将ognl的根对象设置为CompoundRoot
(2)、将 action实例存储到CompoundRoot(栈)
(3)、用户请求参数,通过ognl表达式向CompoundRoot的对象赋值
如何赋值?根据属性从CompoundRoot的栈顶开始找,找到属性就赋值。
4、页面从值栈中查询数据
从CompoundRoot查询,通过ognl 表达式,根据属性从CompoundRoot的栈顶开始找,找到属性则返回
实际开发中从CompoundRoot取值:
1)使用struts2标签
2)使用el表达式(struts2对el增强,先从request域找,如果找不到再从CompoundRoot栈中找)
3) 如何获取request、session、application?使用ognl表达式,在表达式前边添加#
- Struts2
- struts2
- struts2
- Struts2
- struts2
- struts2
- Struts2
- struts2
- struts2
- struts2
- Struts2
- Struts2
- Struts2
- struts2
- struts2
- STRUTS2
- Struts2
- Struts2
- 第七章 使用prototype Cell定制Table View(一)
- HDU 3873 Invade the Mars (dijkstra变形)
- hdu 1025 Constructing Roads In JGShining's Kingdom
- Leetcode 416. Partition Equal Subset Sum
- HDU 1754 I Hate it
- Struts2
- 个人地理数据库和文件地理数据库的区别
- 解决python多版本,yum无法使用的情况
- JSP页面中九个内置对象和四个作用域
- iOS面试题整理
- 中国主要地图投影
- Codeup_100000575_问题1814_剩下的树
- xml详解
- LeetCode 198 House Robber(基础DP)