Structs2学习(四)
创始人
2025-05-29 00:30:21

一、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
在这里插入图片描述

相关内容

热门资讯

默茨称不希望美国干涉德国选举 德国总理默茨15日表示,不希望美国干涉德国选举。 △默茨(资料图) 默茨当天在出席政府夏季新闻发布...
以黎罗马会谈结束 消息人士称双... △7月14日,黎巴嫩南部一处遭袭地区 总台记者获悉,据以色列当地时间15日消息,以色列与黎巴嫩当天在...
中俄投了弃权票 中国常驻联合国代表团临时代办孙磊14日在安理会表决红海袭船报告授权延期决议草案后作解释性发言,强调解...
免费发券1元创收1元,最大独立... 6月30日,自称为中国最大开放、独立token供应平台的硅基流动科技股份有限公司(下称“硅基流动”)...
男子在取保候审期间躺进棺材,用... “从多次酒驾到制造死亡假象,司某以为蒙上被单、躺进棺材就能逃避法律追究,殊不知,以假死对抗司法不仅徒...