Struts2中OGNL

 

什么是OGNL

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

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

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

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

 

OGNL融入框架流程

Struts2中OGNL


 

Ognl表达式

1.#号用法
    1.  访问OGNL上下文和action上下文,#相当于ActionContext.getContext();
    2. 如果访问的是map中的值而不是对象栈中的值,由于map中的数据不是根对象,所以在访问时需要添加#前缀。

Struts2中OGNL

名称

作用

例子

parameters

包含当前HTTP请求的Map

#parameters.id[0]=request.getParameter(“id”)

request

包含当前HttpServletRequest属性的Map

#request.username=request.getAttribute(“username”);

session

包含当前HttpSession属性的Map

#session.username=session.getAttribute(“username”);

application

包含当前ServletContext属性的Map

#application.username=application.getAttribute(“username”);

attr

用于按照request>session>application顺序访问其属性

#attr.username相当于按照顺序在以上三个范围内读取username的属性,直到找到为止。

 


 

值栈与OGNL

值栈(ValueStack)

由Struts 2框架创建的存储区域,具有栈的特点Action的实例会被存放到值栈中

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

Struts2中OGNL