`

OGNL 入门教程

    博客分类:
  • java
阅读更多

ognl是一种表达式语言,感觉跟velocity这些东西差不多

struts2是根据ognl做的,实现mvc

 

ognl需要两个包ognl包,还有xwork-core包,要不会保存,包什么没有javassit什么滴

 

下面给出几个ognl的入门小例子

来源 http://blog.csdn.net/mmm123lmj/article/details/4527898

 

package org.ognl.test;

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

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

/**
 * http://blog.csdn.net/mmm123lmj/article/details/4527898
 * @author Administrator
 *
 */
public class OgnlTest extends TestCase {

	/*获得类属性,以及使用root getValue*/
	public void testOgnl_01() throws Exception{
		User user = new User();
		user.setUsername("dirk");
		
		String value = (String) Ognl.getValue("username", user);
		System.out.println(value);
	}
	
	public void testOgnl_02() throws Exception{
		User user = new User();
		Person p = new Person();
		p.setUsername("dallas");
		user.setPerson(p);
		
		String value = (String) Ognl.getValue("person.username", user);
		System.out.println(value);
	}


	public void testOgnl_03() throws Exception{
		User user = new User();
		Person p = new Person();
		p.setUsername("dallas");
		user.setPerson(p);
		
		String value = (String) Ognl.getValue("#root.person.username",user);
		System.out.println(value);
	}
	
	public static void main(String[] args) throws Exception {
		new OgnlTest().testOgnl_01();
	}
	
	//----------------------------------------------------
	//OGNL CONTEXT使用·
	public void testOgnl_04() throws Exception{
		Person p1 = new Person();
		Person p2 = new Person();
		p1.setUsername("dirk");
		p2.setUsername("terri");
		
		Map<String, Person> context = new HashMap<String, Person>();
		context.put("p1", p1);
		context.put("p2", p2);
		
		String value = (String) Ognl.getValue("p1.username +','+p2.username", context,new Object());
		System.out.println(value);
	}
	
	  public void testOgnl_05() throws Exception{   
	        Person p1 = new Person();   
	        Person p2 = new Person();   
	        p1.setUsername("风");   
	        p2.setUsername("云");   
	           
	        Map<String,Person> context = new HashMap<String,Person>();   
	        context.put("p1", p1);   
	        context.put("p2", p2);   
	           
	        User root = new User();   
	        root.setUsername("雨");   
	           
	        String value = (String)Ognl.getValue("#p1.username + ',' + #p2.username + ',' + username", context, root);   
	        System.out.println(value);   
	    }
	  
	  //-------------------------------------
	  //not important : OGNL赋值操作   java的method反射 get set方法
	   public void testOgnl_06() throws Exception{   
	        User user = new User();   
	           
	        //给root对象的属性赋值,相当于调用user.setUsername()   
	        Ognl.setValue("username", user, "暗之幻影");   
	           
	        System.out.println(user.getUsername());   
	    }   
	  
	  
	    public void testOgnl_07() throws Exception{   
	        User user = new User();   
	  
	        Map<String, User> context = new HashMap<String, User>();   
	        context.put("u", user);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        Ognl.setValue("#u.username", context, new Object(), "暗之幻影");   
	           
	        System.out.println(user.getUsername());   
	    }   
	  
	    public void testOgnl_08() throws Exception{   
	        User user = new User();   
	           
	        Map<String, User> context = new HashMap<String, User>();   
	        context.put("u", user);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        //在表达式中使用=赋值操作符来赋值   
	        Ognl.getValue("#u.username = '暗之幻影'",context, new Object());   
	           
	        System.out.println(user.getUsername());   
	    }   
	    public void testOgnl_09() throws Exception{   
	        User user = new User();   
	        Person p = new Person();   
	           
	        Map<String,Object> context = new HashMap<String,Object>();   
	        context.put("u", user);   
	        context.put("p", p);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        //在表达式中使用=赋值操作符来赋值   
	        Ognl.getValue("#u.username = '风',#p.username = '云'",context, new Object());   
	           
	        System.out.println(user.getUsername()+","+p.getUsername());   
	    }   
	    
	  //--------------------------------------
	  //not important 使用OGNL调用对象的方法
	    public void testOgnl_10() throws Exception{   
	        User user = new User();   
	        user.setUsername("暗之幻影");   
	           
	        String value = (String)Ognl.getValue("getUsername()", user);   
	        System.out.println(value);   
	    }   
	       
	    public void testOgnl_11() throws Exception{   
	        User user = new User();   
	           
	        Ognl.getValue("setUsername('暗之幻影')", user);   
	        System.out.println(user.getUsername());   
	    }   
}
 
分享到:
评论

相关推荐

    经典的ognl详细教程

    OGNL,全称Object-Graph Navigation Language,是一种强大的表达式语言,专为存取对象的属性、...无论是在Web应用开发、Spring框架或其他使用OGNL的项目中,掌握这些基础知识都将极大地提高你的开发效率和代码质量。

    使用的ognl的chm

    **OGNL的基础概念:** 1. **表达式**:OGNL的核心是其表达式,如`person.name`,这将获取`person`对象的`name`属性。 2. **上下文(Context)**:OGNL表达式解析时会查找一个上下文,通常是一个Map,其中包含了变量...

    struts2详细讲解,JQuery,类型转换和OGNL

    本教程将深入探讨Struts2的核心概念、JQuery的使用、类型转换以及OGNL表达式语言。 首先,让我们来看看Struts2的基础知识。Struts2是基于Apache的开源项目,它是对早期Struts框架的升级,引入了拦截器模式,提供了...

    OGNL网上资料整理

    本资料整理主要涵盖了OGNL的基础概念、语法特性、使用场景以及常见问题,旨在帮助读者深入理解和应用这一技术。 一、OGNL基础 1.1 OGNL简介 OGNL起源于2003年,设计目的是简化Java对象模型的导航和数据操作。它...

    ognl-2.6.7-doc

    2. **语法基础**:讲解OGNL的表达式语法,包括访问对象属性、调用方法、数组和集合操作、条件语句、循环语句等。 3. **OGNL在Struts2和Spring中的应用**:如果OGNL主要用于这两个框架,文档可能会深入讨论如何在...

    struts2 OGNL表达式

    在提供的压缩包文件"Struts2_1900_OGNL"中,可能包含了一些关于Struts2 OGNL表达式使用和安全性的示例代码、教程文档或是漏洞分析。通过研究这些内容,你可以更深入地理解和掌握Struts2框架中OGNL表达式的运用,以及...

    ognl(关于标签strusts2)

    在深入研究Struts2和OGNL时,可以查看`Struts2Day2_ognl`压缩包中的资源,可能包含教程、示例代码、练习和解决方案,帮助你更全面地掌握这一重要技术。记得定期更新Struts2框架和依赖,以确保使用的是最新的安全版本...

    struts2入门教程

    很好的struts2入门教程,网上搜集整理的! 内容: ·常用的Struts 2.0的标签(Tag)介绍 ·Struts 2.0的Action讲解 ·Struts2国际化(i18n)您的应用程序 ·Struts2.0转换器(Converter) ·Struts 2.0中实现...

    Struts2入门教程_Struts2入门教程_skindzj_

    本教程中的"Struts2入门教程.pdf"可能会涵盖以上所有内容,并可能提供详细的步骤指导、实例代码以及常见问题解答。通过阅读这份教程,你应该能够掌握Struts2的基本用法,并具备独立开发基于Struts2的web应用的能力。...

    Struts2入门教程 pdf

    在阅读《Struts2入门教程》时,你将逐步学习如何创建第一个Struts2应用,配置Action,使用拦截器,理解OGNL的工作原理,以及如何利用Struts2的插件和特性来优化你的项目。此外,教程可能还会涵盖如何进行异常处理、...

    Struts2入门教程_Struts2入门教程_skindzj_.zip

    本入门教程将带你深入了解Struts2的基础知识、核心概念以及实际应用。 1. **Struts2简介** Struts2是Apache软件基金会的一个开源项目,它在Struts1的基础上进行了许多改进,提供了更强大的功能和更高的灵活性。...

    Struts2.0中文教程和struts2入门教程

    通过"Struts2.0中文教程"和"struts2入门教程",学习者可以逐步了解并掌握这些概念,从搭建开发环境、创建第一个Struts2应用开始,到深入理解其工作原理和高级特性,为Java Web开发打下坚实基础。教程中还可能包含...

    java开发零基础汇道入门教程表.docx

    【Java开发零基础汇道入门教程】是一份详细的Java学习指南,涵盖了从基础到进阶的各个阶段。这个教程分为三个主要阶段:JAVASE阶段、JAVA Web阶段和JAVAEE高级阶段。 **JAVASE阶段**是入门的基础,主要包括以下几个...

    Struts2入门教程(全新完整版)

    2.OGNL入门 24 3.普通方法访问 24 4.静态方法访问 24 5.默认类Math的访问 24 6.调用普通类的构造方法 25 7.集合对象初步 25 8.集合对象进阶 25 9.N语法top语法 26 10.获取Stack Context中的信息 26 11.总结$ # %的...

    struts2入门经典教程

    本教程“Struts2入门经典教程”是针对初学者精心编写的,旨在帮助新手快速掌握Struts2的基础知识,并为有Struts1背景的开发者提供平滑的学习路径。 Struts2的核心特性包括: 1. **Action类与Result**:在Struts2中...

    Struts2入门教程。包括jquery集成等。入门必看

    ### Struts2入门教程知识点概览 #### 一、Struts2简介 - **起源与发展**:Struts2并非新生事物,而是建立在Struts1和WebWork基础上的一个Web应用框架。它融合了两者的优势,提供了更为强大的功能支持。 - **设计...

Global site tag (gtag.js) - Google Analytics