Struts2整合OGNL

Posted JAVA与大数据训练营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2整合OGNL相关的知识,希望对你有一定的参考价值。

OGNL表达式:

OGNL:Object Graphic Navigation Language. 对象视图导航语言. struts2没有选择使用EL表达式作为整合表达式语言.而选择了功能更加强大OGNL表达式作为整合语言. 在Struts2环境中,更加推荐使用ognl表达式获得数据.

语法使用:

1.从Context部分取值: #号前缀
System.out.println(Ognl.getValue("#user1.name", oc.getValues(), oc.getRoot()));
System.out.println(Ognl.getValue("#user1.age", oc.getValues(), oc.getRoot()));

2.从Root部分取值: 不需要任何前缀
System.out.println(Ognl.getValue(“name”, oc.getValues(), oc.getRoot()));
System.out.println(Ognl.getValue(“age”, oc.getValues(), oc.getRoot()));

3. 调用方法
Ognl.getValue("#user1.setName(‘jack’)", oc.getValues(), oc.getRoot());
System.out.println(Ognl.getValue("#user1.getName()", oc.getValues(), oc.getRoot()));

4.调用方法(静态方法),访问静态属性

4.1 访问静态方法
System.out.println(Ognl.getValue("@cn.itcast.a_ognl.TestUtils@echo(\'hello ~ \')", oc.getValues(), oc.getRoot()));

4.2 访问静态属性
System.out.println(Ognl.getValue("@java.lang.Math@PI", oc.getValues(), oc.getRoot()));

5.为属性赋值
注意:赋值时,OGNL表达式支持自动类型转换. 8大基本数据类型以及对应包装类再加上Date类型.

System.out.println(Ognl.getValue("#user1.name=‘rose’ , #user1.name “, oc.getValues(), oc.getRoot()));
System.out.println(Ognl.getValue(”#user1.age=‘16’ , #user1.age ", oc.getValues(), oc.getRoot()));

Struts2与OGNL的整合
struts2与OGNL整合,准备了一个OGNLValuesStack对象.该对象由两部分构成.

Context:部分.类型是一个Map. 实质上就是数据中心;
Root部分: 类型是一个栈;

 

 

struts2 为 OGNL 准备了数据
|- Context => 数据中心
|- Root => 栈

数据中心中放置
|- request域 session域 application域
|- 原生request对象,response对象,servletContext对象
|- parameters参数集合...................

栈中放置了什么数据
栈中放置了当前访问Action

Ognl在Struts2中的应用

1> 页面中根据OGNL获得值

 

 

2> 参数赋值\'

 

 

3> 在struts.xml 中使用OGNL表达式

 

 

 

 

4>进阶: el 与 OGNL 的关系

 

 

更多java、大数据学习面试资料,请扫码关注我的公众号:

 

以上是关于Struts2整合OGNL的主要内容,如果未能解决你的问题,请参考以下文章

SSH之Spring整合struts2

ssm(struts2+spring+mybatis)整合

spring整合struts2

Spring与Struts2整合

Struts2与Spring整合

Mybatis+struts2+spring整合