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来演示两种取值方法和结果: