关闭

OGNL详解

标签: OGNLStruts2
63人阅读 评论(0) 收藏 举报
分类:

本文目标:

1、知道什么是OGNL;

2、为什么使用OGNL;

3、如何使用OGNL。

OGNL介绍

1、OGNL是什么?
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。类似于EL表达式。

2、为什么使用OGNL?
  1)因为OGNL功能更为强大;
2)Struts2默认采用OGNL表达式来访问Action中的数据(实际上上是通过ValueStack对象来访问Action的)。

3、OGNL的实现原理
在Struts2中,使用OGNL表达式访问Action数据,实际上是通过ValueStack进行访问的,ValueStack中封装了Action对象以及程序上下文相关的数据。
在JSP中写OGNL表达式,会通过标签解析组件发送给ValueStack,而ValueStack会通过其内部的OGNL引擎来解析表达式,从而取值

4、如何使用OGNL表达式
首先要想使用OGNL表达式必须显得加上标签:
<%@taglib uri="/struts-tags" prefix="s"%>。
这个标签在struts-core包下的META-INF下的struts-tags.tld中。
---struts2的显示标签
<s:property value="表达式"/>

5、使用OGNL表达式能做什么?
1)访问Action中的基本属性(在Action中需定义其的get方法)
public class Action {
	
	private User user;
	private String message;
   
        public User getUser(){
              return this.user;
        }
       
        public String getMessage(){
              return message;
       }

	public String execute(){
		return "success";
	}
}
<s:property value="user.name"/>    访问User中的name属性
<s:property value="message"/>       访问message属性
2)访问数组集合
需要在Action中定义数组和集合,并定义它们的get方法。
<s:property value="数组名/集合名[下标]"/>

3)访问Map
<s:property value="Map名称.key值"/>得到的是value值。

4)运算
在value中可以对返回结果进行计算+/-/*/等。

5)可以调用方法
在value中可以调用返回值的方法:例如放回值是String类型的就能够调用String类型的方法.
6)可以创建集合
在value中使用{'a'','b','c'}可以创建ArrayList集合。

7)可以创建Map
   在value中可以使用{'北京':'2200万人','上海':'2300万人','广州','2000万人'}创建LinkedHashMap。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:320次
    • 积分:32
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档