struts2-OGNL表达式-OGNL与Struts2的结合

1 OGNL表达式 

OGNL:对象视图导航语言. ${user.addr.name} 这种写法就叫对象视图导航.
OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能.

1.1 使用OGNL

导包

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

代码准备

struts2-OGNL表达式-OGNL与Struts2的结合

struts2-OGNL表达式-OGNL与Struts2的结合

1.2 语法

基本取值

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的结合

2 OGNL与Struts2的结合

2.1 结合原理

struts2-OGNL表达式-OGNL与Struts2的结合

ValueStack中的两部分

struts2-OGNL表达式-OGNL与Struts2的结合

 

2.2 栈原理

 栈是由ArrayList模拟的struts2-OGNL表达式-OGNL与Struts2的结合

struts2-OGNL表达式-OGNL与Struts2的结合

栈中的两个方法的实现

struts2-OGNL表达式-OGNL与Struts2的结合

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

struts2-OGNL表达式-OGNL与Struts2的结合

 

 

2.3 查看值栈中两部分内容

(使用DEBUG标签)

struts2-OGNL表达式-OGNL与Struts2的结合

Root

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

struts2-OGNL表达式-OGNL与Struts2的结合

Context

struts2-OGNL表达式-OGNL与Struts2的结合

Context部分就是ActionContext数据中心

struts2-OGNL表达式-OGNL与Struts2的结合

 

2.4 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标签

 

 

2.5 request的getAttribute

 查找顺序

struts2-OGNL表达式-OGNL与Struts2的结合