框架 ---Struts2 OGNL概述 ValueStack(值栈)no 03.

OGNL

 1.1.1OGNL概述

1.1.1.1什么是OGNL ##

OGNL
在这里插入图片描述
 **OGNL:**对象图导航语言,比EL表达式强大很多倍的语言。
** EL:**从域中对象中获取数据,从EL的11个对象中获取。 N A M E {NAME } NAME{pageContext.request.contextPath}
** OGNL:**调用对象的方法,获取Struts2的值栈的数据。OGNL其实是第三方的表达式语言。
在这里插入图片描述
Img(访问OGNL上下文)

 1.2.1OGNL使用的要素

 表达式:

 根对象

 Context对象:

/*
* OGNL调用对象的方法
* */
在这里插入图片描述
在这里插入图片描述
1.2.2OGNL在Java环境入门(了解)

/*
* 访问对象的静态方法
* /
在这里插入图片描述
在这里插入图片描述
/

* 访问Root中的数据
* */
在这里插入图片描述
在这里插入图片描述

/*
* 访问context中的数据 需要加#
* */
在这里插入图片描述
在这里插入图片描述

 1.2.3OGNL在Struts2环境下的入门
 调用对象的方法
在这里插入图片描述

 调用对象的静态方法
 (需要在defualt.properties中找到对应的开启属性方法)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3ValueStack(值栈)

 1.3.1值栈的概述 

1.3.1.1什么是值栈

Img

 ValueStack其实类似于一个数据中转站(Struts2的框架当中的数据就都保存到了ValueStack中)。
 ValueStack接口,实现类OnglValueStack对象。
 ValueStack贯穿整个Action的生命周期。(Action一旦创建了,框架就会创建一个ValueStack对象)。

1.3.1.2值栈的内部结构

 Valuestack中有两个主要的区域:
 Root区域:其实就是一个ArrayList。里面一般放置对象。获取root的数据不需要加#。
 Context区域:其实就是一个Map。里面放置是web开发的常用的对象数据的引用。获取context数据需要加#。
 Reques
 Session
 Application
 Parameter
 Attr
 所说的操作值栈,通常指的是操作的ValueStack中的root区域。
在这里插入图片描述
1.3.1.3值栈与ActionContext的关系
 ServletContext:Servlet的上下文。
 ActionContext:Action的上下文。
 通过源代码可以看到:当请求过来的时候,执行过滤器中doFilter方法,在这个方法中创建ActionContext,在创建ActionContext过程中,创建ValueStack对象,讲ValueStack对象传递给ActionContext对象。所有可以通过ActionContext互殴去值栈对象。
 ActionContext对象之所以能够访问Servlet的API(访问是域对象的数据)。因为在内部有值栈的引用
 1.3.1.4获得值栈

 通过ActionContext对象获取值栈。
在这里插入图片描述
 在Struts2的内部,将值栈存入reqeust中一份。
在这里插入图片描述
在这里插入图片描述

 1.3.1.5操作值栈—向值栈中存入数据
 一种:在Action中提供属性的get方法的方式
 默认的情况下,将Action对象压入到值栈。Action的属性?(也会在值栈中)
在这里插入图片描述
在这里插入图片描述
 二种:使用ValueStack中本身的方法的方式。
在这里插入图片描述
 1.3.1.6获取值栈数据
 获取值栈中的数据就是在页面中使用OGNL表达式即可。
 获取对象的数据
 获取context数据,加上#号
 1.3.1.7EL为何访问值栈数据
 因为Struts2的框架的底层对request.getAttribute(String name).

1.4OGNL中特殊字符

 1.4.1#号
 获取context的数据
 构建map集合
 1.4.2%号
 强制解析OGNL
 1.4.3$号
 在配置文件中使用OGNL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值