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表达式,在表达式前边添加#