struts2: OGNL表达式、OGNL表达式与struts2结合

OGNL表达式

OGNL:对象视图导航语言.  ${user.addr.name} 这种写法就叫对象视图导航.

OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能.


使用OGNL准备工作

 导包:struts2 的包中已经包含了.所以不需要导入额外的jar包

 代码准备

struts2: OGNL表达式、OGNL表达式与struts2结合
struts2: OGNL表达式、OGNL表达式与struts2结合

语法:

基本取值

struts2: OGNL表达式、OGNL表达式与struts2结合
struts2: OGNL表达式、OGNL表达式与struts2结合

赋值


struts2: OGNL表达式、OGNL表达式与struts2结合

调用方法

struts2: OGNL表达式、OGNL表达式与struts2结合

调用静态方法

struts2: OGNL表达式、OGNL表达式与struts2结合

创建对象(List,Map)


struts2: OGNL表达式、OGNL表达式与struts2结合

OGNL与Struts2的结合

结合原理

struts2: OGNL表达式、OGNL表达式与struts2结合

ValueStack中的两部分

struts2: OGNL表达式、OGNL表达式与struts2结合

栈原理

struts2: OGNL表达式、OGNL表达式与struts2结合

栈是由ArrayList模拟的

struts2: OGNL表达式、OGNL表达式与struts2结合

栈中的两个方法的实现

struts2: OGNL表达式、OGNL表达式与struts2结合

访问栈中属性的特点.由上到下

struts2: OGNL表达式、OGNL表达式与struts2结合

查看值栈中两部分内容(使用DEBUG标签)

Root

默认情况下,栈中放置当前访问的Action对象

struts2: OGNL表达式、OGNL表达式与struts2结合

Context

Context部分就是ActionContext数据中心


struts2: OGNL表达式、OGNL表达式与struts2结合
struts2: OGNL表达式、OGNL表达式与struts2结合

struts2与ognl结合体现

参数接收


struts2: OGNL表达式、OGNL表达式与struts2结合
struts2: OGNL表达式、OGNL表达式与struts2结合
struts2: OGNL表达式、OGNL表达式与struts2结合

如何获得值栈对象,值栈对象与ActionContext对象是互相引用的

struts2: OGNL表达式、OGNL表达式与struts2结合

配置文件中

取出值语法:${ognl表达式}


struts2: OGNL表达式、OGNL表达式与struts2结合


struts2_day03




一.ognl表达式
准备工作:
1.导包 - 包含在struts2包中
2.OGNLContext
|-Root 任意对象
|-Context Map
语法:
1.取值
2.赋值
3.调用方法
4.调用静态方法
5.创建List|Map

二.OGNL与Struts2的整合

Struts2为ognl准备了一个ValueStack对象,作为ognl取值范围

ValueStack
|-Root
|-Context   ActionContext(数据中心)

栈 => 默认放置当前访问的Action对象
ActionContext 
|- request
|- response
|- servletContext
|- requestScope
|- sessionScope
|- applicationScope
|- parameters
|- attrs
......
OGNL与Struts2结合的应用
|- 参数接收 => struts2中的参数是交给ognl引擎处理
|- 配置文件中 => ${ognl表达式}
|- 标签(今天讲)