1.什么是OGNL
Object-Graph Navigation Language 对象图导航语言。这种语言非常强大,可以存取任意对象的属性或者调用对象的方法,能够遍历整个对象的图结构,实现对属性类型的转换等功能,是struts2框架的特点之一。
2.什么是ONGL上下文
ONGL表达式的计算是围绕ONGL上下文进行的,我们以一个形象化的例子来看看触手可及ONGL上下文:
新建控制层test.java
package controller;
public class test {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String execute()
{
username = "niujiabin";
return "show";
}
}
新建show.jsp,并在箭头处设置断点。

在myeclipse的debug模式下运行test.action,可以看到variables面板:

第二行就是我们所要找的OgnlContext(OGNL上下文),我们点开看看里面都有什么

我们先找到root行。里面对存放的都是跟对象,是可以直接访问的,看看root里面有没有我们熟悉的东西

没错,我们在action中定义username就在root下,我们可以这样总结:action中的属性会放在值栈中,并且是在root下。存放在root中的任何属性,我们都是可以直接访问的,取值的方式可以使用EL表达式:${username},关于EL表达式,不在本文章的范围,请同学自行学习。也可以用struts2标签来取值:<s:property value="username">
我们新建一个jsp来演示两种取值方法和结果:

