`
yunzhongzi
  • 浏览: 14051 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OGNL框架的使用入门(一)

阅读更多
    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
    开源框架OGNL就是基于该表达式语言的一个实现,你可以从http://www.ognl.org得到ognl.jar,源码和一些文档。本文主要通过一个例子讲述通过Java Main函数如何使用ognl.jar。
    当然,首先得建立你的工程,然后把ognl.jar引入到你的类路径中。同时把junit.jar也引入到你的类路径,因为本文的例子的测试代码需要用到junit.jar。
    然后建立Java类Company.java,User.java。这两个类只是简单的JavaBean。代码如下:
/**
 * 公司对象
 * */
public class Company {
    /**
     * 公司名字
     * */
    private String companyName;
	public String getCompanyName() {
		return companyName;
	}
	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}
}
/**
 * 用户对象
 * */
public class User {
	
	/**
	 * 姓名
	 * */
	private String name;
	
	/**
	 * 所在公司
	 * */
	private Company company;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Company getCompany() {
		return company;
	}
	public void setCompany(Company company) {
		this.company = company;
	}

}
   

    接着,建立类TestOngl.java,主要的测试代码都在该类中。
package ognltest;

import java.util.HashMap;
import java.util.Map;

import junit.framework.TestCase;
import ognl.Ognl;
import ognl.OgnlException;

public class TestOngl extends TestCase{
    //此处为类中的代码。
}


    类中的第一方法为,testOgnlSimpleProperty,演示了如何用Ognl从一个简单对象中取属性值。代码如下:
/**
	 * 测试简单属性
	 * */
	public void testOgnlSimpleProperty()
	{
		User user=new User();
		user.setName("abc");
		try {
			Object result = Ognl.getValue("name",user);//********(1)
			System.out.println("***简单属性**********result::"+result);
			//输出:***简单属性**********result::abc
		Company com=new Company();
		com.setCompanyName("某某科技有限公司");
		user.setCompany(com);
		
		result=Ognl.getValue("company.companyName",user);//*******(2)
		System.out.println("***嵌套属性**********result::"+result);
		//输出:***嵌套属性**********result::某某科技有限公司
		} catch (OgnlException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



    其中行(1)中的”name”,行(2)中的” company.companyName”就是表达式语言了,只不过这两个表达式是最但的表达式了。
    类中的第二方法为,testFromMap,演示了如何用Ognl从一个Map中取对象中取对象或对象的属性值。代码如下:
/**
	 * 测试从Map中取
	 * */
	public void testFromMap() throws OgnlException
	{
		Map distObject=new HashMap();
		distObject.put("abc","10000");
		Object result = Ognl.getValue("abc",distObject);//********(1)
		
		System.out.println("***从Map中取简单属性**********result::"+result);
		//输出:***从Map中取简单属性**********result::10000
		User user=new User();
		user.setName("myName");
		distObject.put("user",user);
		result = Ognl.getValue("user.name",distObject);//********(2)
		System.out.println("***从Map中取嵌套属性**********result::"+result);
		//输出***从Map中取嵌套属性**********result::myName
		
	}



    好了,通过这个例子,相信大家知道Ognl表达式是怎么一回事了,也应该了解怎么使用ognl.jar。不妨大家自己动手去联系一下这个例子,感受一下ognl的强大之处。
    其实,现在流行的MVC框架webwork,struts2都用到了OGNL,如果你学会了OGNL的基础知识,那么你在学webwork中的OGNL时,或者struts2中的OGNL时,也就轻车熟路了。
接下去的章节将更进一步讲述OGNL的使用。Qq: 916932073。
分享到:
评论
3 楼 andyhua2013 2012-05-08  
[color=red]运行出错,你还有个架包没导啊,javassist.jar,导入这个包运行才会对。[/color]
2 楼 xiebiao110 2010-12-21  
http://www.ognl.org居然不能访问了
1 楼 wangzhongjie 2008-04-24  
^_^,谢谢了,跟着你的例子终于知道ognl的用户,但是有点疑问就是beanutil也有这些功能呀,为什么一定要用ognl呢

相关推荐

    学习Ognl 这是为初学Ognl者提供的一个小例子,本人也在学习中,希望通过它能让你认识 Ognl ,送达到入门!!

    Ognl起源于Struts框架,但后来发展成为一个独立的库,广泛应用于许多Java Web应用中,如Spring MVC、Struts2等。Ognl允许开发者用自然的语法来访问和操作对象的属性,执行动态方法调用,甚至进行复杂的表达式计算。 ...

    struts2框架入门

    Struts2框架是Java Web开发中的一个强大工具,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化、易于维护的Web应用开发方式。本资源包含"15_学员用书_STRUTS2核心_IMAGE版.pdf"这本书的源码...

    STRUTS2+ognl

    Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性良好的企业级应用的工具。Ognl(Object-Graph Navigation Language)是Struts2中的一...

    OGNL Language Guide 中文版

    ### OGNL语言指南知识点概览 #### 一、OGNL简介 ...OGNL 作为一种强大的表达式语言,在 Java 应用开发中有着广泛的应用场景,尤其在 Web 开发领域,它的灵活性和易用性使其成为许多框架和库的重要组成部分。

    struts2入门框架搭建需要的jar

    本文将深入探讨Struts2入门框架搭建过程中需要的核心jar文件及其作用。 1. **struts2-core-2.5.16.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它提供了解析请求、执行...

    struts2开发入门以及webWork开发入门文档

    这里我们将深入探讨这两个框架的入门知识。 1. **Struts2入门** - **框架概述**:Struts2是一个基于MVC设计模式的开源框架,它提供了强大的控制器层,简化了Java Web应用的开发。Struts2强调可插拔性和灵活性,...

    Struts2入门教程.pdf

    - **Struts2起源**:Struts2并非一个全新的Web框架,而是建立在WebWork框架设计理念之上,融合了Struts1的优点而形成的一个框架。可以说,它是Struts1与WebWork框架的结合体。 - **Struts2的吸引力**:由于其优秀的...

    java框架系列

    4. Spring参考手册.pdf、spring快速入门教程.pdf、Spring开发指南.pdf:这些文档是Spring框架的官方或非官方指南,涵盖了Spring框架的各个方面,从基本的bean配置到高级的特性如Spring Boot、Spring Cloud等。...

    框架入门学习

    Struts2是一个流行的Java Web应用程序开发框架,它基于Model-View-Controller (MVC)设计模式,旨在简化和规范Web应用的开发流程。Struts2是在WebWork的基础上发展起来的,融合了WebWork的优点,提供了更强大的功能和...

    Struct2入门例子

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在Struts1的基础上进行了很多改进,提供了更丰富的功能和更好的灵活性。本入门例子旨在帮助初学者快速理解并掌握Struts2的...

    strut2入门几个小demo

    这个压缩包可能包含了几个简单的Struts2应用实例,比如“Hello, World”程序,展示了如何配置Struts2框架,创建Action类,编写JSP页面以及使用OGNL来显示数据。这些基础的步骤对于初学者理解Struts2的工作原理至关...

    struts2入门教程

    ### Struts2入门教程知识点概览 #### 一、Struts2简介 - **起源与发展**:Struts2...以上内容覆盖了Struts2框架的核心概念和技术要点,对于初学者来说,这些知识点可以帮助他们快速入门并掌握Struts2的基本使用方法。

    struts2入门demo

    Struts2是一个强大的Java EE应用程序框架,用于构建和维护可扩展、模块化且易于管理的Web应用程序。这个"struts2入门demo"是为初学者准备的一个基础实践项目,旨在帮助理解Struts2的核心概念和工作流程。让我们深入...

    javaweb Struts2 框架搭建方法与空框架模型

    - 入门参考的小项目可能包含了一个简单的登录或注册功能,通过实践理解Struts2的工作流程和组件使用。 8. **扩展与优化** - 学习使用Struts2的拦截器(Interceptor)进行日志记录、权限控制等操作。 - 熟悉OGNL...

    Struts2入门demo

    这个"Struts2入门demo"旨在为初学者提供一个快速理解并实践Struts2框架的起点。以下是对Struts2核心概念和相关知识点的详细说明: 1. **MVC模式**:Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务...

    Struts2的第一个入门实例(一)

    同时,这也是一个很好的起点,帮助你进一步学习Struts2的拦截器、OGNL表达式、动态方法调用、结果类型、国际化等高级特性。随着对Struts2的深入理解,你可以构建更复杂的Java Web应用,提高开发效率和代码质量。

    轻松入门之struts2

    Struts2教程系列旨在帮助读者快速入门并掌握Struts2框架的使用,特别适合那些希望在最短时间内了解Struts2最大范围知识的读者。 该教程的内容涵盖了从入门到高级话题的多个方面,包括Struts2的核心概念、表单验证、...

    Struts2入门到精通教程.zip

    通过这个"Struts2入门到精通教程",你将能够从零开始学习如何创建一个简单的Struts2应用,逐步深入到使用拦截器、OGNL、Tiles和异常处理等高级特性,最终达到精通Struts2框架的目标。在学习过程中,不断实践和理解每...

    ExtJS_MVC框架的搭建实例

    通过一个简单的例子来演示如何使用SSM + ExtJS MVC框架构建一个Web应用: 1. **需求分析**: 假设我们需要构建一个用户管理系统,包括用户列表展示、添加、编辑和删除等功能。 2. **设计数据库**: 设计数据库表结构...

    Struts2+Hibernate+Spring框架搭建(一)

    本篇文章将详细讲解如何利用这三个框架进行整合搭建,旨在为初学者提供一个清晰的入门指南。 **Struts2** 是一个基于MVC设计模式的Web应用框架,它主要负责控制应用程序的流程,处理用户的请求并转发到相应的业务...

Global site tag (gtag.js) - Google Analytics