Struts2第三章 Orgl

 

 

00.OGNL 的历史

 

OGNL 最初是为了能够使用对象的属性名来建立 UI 组件 (component) 和 控制器 (controllers) 之间的联系,简单来说就是:视图 与 控制器 之间数据的联系。后来为了应付更加复杂的数据关系,Drew Davidson 发明了一个被他称为 KVCL(Key-Value Coding Language) 的语言。 Luke 参与进来后,用 ANTLR 来实现了该语言,并给它取了这个新名字,他后来又使用 JavaCC 重新实现了该语言。目前 OGNL Drew 来负责维护。目前很多项目中都用到了 OGNL,其中不乏为大家所熟知的,例如几个流行的 web 应用框架:WebWorkTapestry 等。

 

01.什么是OGNL 

OGNL:Object Graph Navigation Language  对象导航图语言

开源项目,取代页面中Java脚本,简化数据访问

EL同属于表达式语言,但功能更为强大

让我们通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。

 

  

02.OGNL在Struts 2中的作用

表达式语言

将表单或Struts 2标签与特定的Java数据绑定起来,用来将数据移入、移出框架

类型转换

数据进入和流出框架,在页面数据的字符串类型和Java数据类型之间进行转换

03.OGNL融入Struts 2

数据流入

数据流出

 

 

04.值栈与OGNL

值栈(ValueStack)

Struts 2框架创建的存储区域,具有栈的特点

Action的实例会被存放到值栈中

OGNL访问值栈

按照从上到下的顺序,靠近栈顶的同名属性会被读取

作业:blogs

 

 

 

 

 

 

 

 

05.存值入值栈 单列

Action

 

 

Web.xml:

 

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--过滤器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<!--拦截所有方法-->
<url-pattern>/*</url-pattern>
</filter-mapping>



</web-app>

Struts.xml:

 

 

 

页面:

 

 

 

 

05.存值入值栈 双列

Action

 

 

 

Struts.xml:

 

 

 

页面:

 

posted on 2018-02-26 14:25  我是谁0202  阅读(134)  评论(0编辑  收藏  举报