Struts2学习--第三天
Struts2学习–第三天
1、OGNL表达式
OGNL:对象图导航语言
- OGNL表达式不仅可以取数据,也可以存数据。
它可以调用java对象的方法。
使用OGNL表达式获取数据,使我们在开发中经常用的。
使用OGNL表达式实现给对象的赋值,是Struts2框架做的。 - 回顾:EL表达式
没有空指针异常、没有字符串拼接、没有数组下标越界
2、OGNL上下文—ContextMap
它是Struts框架中封装数据最大的容器,封装了我们一次请求可能会用到的所有数据;它是一个Map结构。Map的key是String类型,Map的Value是Object类型,里面的内容包括但不限于以下内容:
3、ActionContext以及它和ContextMap的关系
- 1)ActionContext是一个工具类,它里面提供了可以便捷操作ContextMap的方法。
- 2)ActionContext的创建时间点:每次请求都会创建一个新的。放在了Struts2的核心过滤器中的doFilter方法。
- 3)由于Java ee应用是多线程的,它通过把ActionContext绑定到ThreadLocal上来实现线程同步。
- 4)我们通过代码得知,要想获取该对象,需要调用ActionContext静态方法getContext()从当前线程上获取。
ActionContext存取数据:
4、ValueStack对象的使用
ValueStack也是一个工具类,是一个list结构。
ValueStack的数据存取:
OGNL表达式的找法,是从栈顶逐个属性名称开始查找,只要找到之后,就不在继续查找,直接返回结果。
5、Struts2中EL表达式的使用
- EL表达式的搜索范围: page request session application (由小到大逐个搜索,只要找到就不在继续查找)
- 当使用了Struts2之后,它对request进行了增强,改变了EL表达式的搜索顺序。因此还需要用EL表达式。
-
各种符号总结: