Structs2学习(四)
一、OGNL的概述:
1,什么是OGNL:

OGNL:对象图导航语言,比EL表达式强大很多倍的语言。
- EL:从域对象中获取数据,从EL的11个对象中获取。${name} ${pageContext.request.contextPath}
- OGNL:调用对象的方法,获取Structs2的值栈的数据。OGNL其实是第三方的表达式语言,及时不在Structs2里面也能在java中运行。
2.为什么学习OGNL:

3.OGNL的使用要素:
- 表达式
- 根对象
- Context对象
二、OGNL在java环境下的入门(了解)
1.访问对象的方法:

2、访问对象的静态方法:

3.获得root中的数据:

4.访问context中的数据:

三、OGNL在Structs2环境下的入门:
1、访问对象的方法:

2、访问对象静态的方法:

默认情况下不会开启静态方法,必须在配置文件中手动开启

四、值栈的概述:
1、什么是值栈:

ValueStack其实类似于一个数据中转站(Structs2的框架当中的数据就都保存到了ValueStack中)
- ValueStack接口,实现类OgnlValueStack对象
- ValueStack贯穿整个Action的生命周期。(Action一旦创建了,框架就会创建一个ValueStack对象)
2、值栈的内部结构:

值栈内部结构:

3、值栈与ActionContext的关系:

4、获得值栈:
1)通过ActionContext获取值栈:
2)通过request对象获取值栈:

注:两种方式获得的ValueStack方式是同一个。因为在一个Action实例当中获得的一个ValueStack的实例,所以上诉代码返回值为true
5、操作值栈:

方式一:


方式二:


6、获取值栈数据:
获取值栈中的数据就是在页面中使用OGNL表达式即可
1)获取root数据:


2)获取context数据:


7、EL如何访问值栈的数据:

五、OGNL中特殊字符:
1.#号
1)获取context数据:

2)使用#构建Map集合:

2、%号:
1)强制解析OGNL:

2)强制不解析OGNL:
property里面的OGNL是一定会解析的,加上%就强制转换成字符串,不让解析。

3、$号:
在配置文件中使用OGNL

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
