Struts2 (三)OGLN

01.OGNL 的历史

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

02.什么是OGNL

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

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

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

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

03.OGNL在Struts 2中的作用

表达式语言

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

类型转换

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

 

03.值栈与OGNL

值栈(ValueStack)

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

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

OGNL访问值栈

 

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

04.为什么进行类型转换

在基于HTTP协议的Web应用中

客户端请求的所有内容都以文本编码方式传输到服务器端,服务器端的编程语言却有着丰富的数据类型

Servlet中,类型转换工作由开发者自己完成

 

 action

 

 struts.xml

 jsp

 

posted @ 2018-02-26 14:14  小嘎嘎  阅读(333)  评论(0编辑  收藏  举报