Struts2学习--第三天

Struts2学习–第三天

1、OGNL表达式

OGNL:对象图导航语言
Struts2学习--第三天

  • OGNL表达式不仅可以取数据,也可以存数据。
    它可以调用java对象的方法。
    使用OGNL表达式获取数据,使我们在开发中经常用的。
    使用OGNL表达式实现给对象的赋值,是Struts2框架做的。
  • 回顾:EL表达式
    没有空指针异常、没有字符串拼接、没有数组下标越界
    Struts2学习--第三天
    Struts2学习--第三天
    Struts2学习--第三天
    Struts2学习--第三天
    Struts2学习--第三天
2、OGNL上下文—ContextMap

它是Struts框架中封装数据最大的容器,封装了我们一次请求可能会用到的所有数据;它是一个Map结构。Map的key是String类型,Map的Value是Object类型,里面的内容包括但不限于以下内容:
Struts2学习--第三天

3、ActionContext以及它和ContextMap的关系
  • 1)ActionContext是一个工具类,它里面提供了可以便捷操作ContextMap的方法。
  • 2)ActionContext的创建时间点:每次请求都会创建一个新的。放在了Struts2的核心过滤器中的doFilter方法。
  • 3)由于Java ee应用是多线程的,它通过把ActionContext绑定到ThreadLocal上来实现线程同步。
  • 4)我们通过代码得知,要想获取该对象,需要调用ActionContext静态方法getContext()从当前线程上获取。
    Struts2学习--第三天
    ActionContext存取数据:
    Struts2学习--第三天
    Struts2学习--第三天
    Struts2学习--第三天
4、ValueStack对象的使用

ValueStack也是一个工具类,是一个list结构。
Struts2学习--第三天
ValueStack的数据存取:
Struts2学习--第三天
Struts2学习--第三天
OGNL表达式的找法,是从栈顶逐个属性名称开始查找,只要找到之后,就不在继续查找,直接返回结果。
Struts2学习--第三天
Struts2学习--第三天
Struts2学习--第三天

5、Struts2中EL表达式的使用
  • EL表达式的搜索范围: page request session application (由小到大逐个搜索,只要找到就不在继续查找)
  • 当使用了Struts2之后,它对request进行了增强,改变了EL表达式的搜索顺序。因此还需要用EL表达式。
    Struts2学习--第三天
  • 各种符号总结:
    Struts2学习--第三天
6、案例:使用OGNL表达式获取客户列表展示

Struts2学习--第三天