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

转: struts 2专用表达式(10)上

阅读更多

OGNLObject Graphic Navigation Language(对象图导航语言)的缩写,OGNL是一个开源项目,读者可以访问其官方站点www.ognl.org以获得源代码和相关资料。OGNL是一种功能强大的ELExpression Language,表达式语言),可以通过简单的表达式来访问Java对象中的属性。

OGNL先在WebWork项目中得到应用,也Struts 2框架视图默认的表达式语言,可以说,OGNL表达式是Struts 2框架的特点之一。

 

8.1.3  一个使用OGNL的示例

下面笔者以一个简单的示例来帮助读者理解OGNL表达式。使用OGNL表达式,需要在www.ognl.org网站下载一个ognl.jar插件包,将该文件复制到classpath路径下即可。建立一个复合类型,如代码8.1所示。

代码8.1  定义复合类型

 

package ch8;

import java.util.Date;

//团队类

public class Team {

    
// 团队名称

    
private String teamname;

    
// 定义团队人员属性

    
private Person person;

    
// 团队人数

    
private int personnum;

    
//属性的getter和setter方法

    
public String getTeamname() {

        
return teamname;

    }


    
public void setTeamname(String teamname) {

        
this.teamname = teamname;

    }


    
public Person getPerson() {

        
return person;

    }


    
public void setPerson(Person person) {

        
this.person = person;

    }


    
public int getPersonnum() {

        
return personnum;

    }


    
public void setPersonnum(int personnum) {

        
this.personnum = personnum;

    }


}


// 定义人员类

class Person {

    
// 姓名

    
private String name;

    
// 年龄

    
private int age;

    
// 人员出生日期

    
private Date birthday;

    
//属性的getter和setter方法

    
public String getName() {

        
return name;

    }


    
public  void setName(String name) {

        
this.name = name;

    }


    
public int getAge() {

        
return age;

    }


    
public void setAge(int age) {

        
this.age = age;

    }


    
public Date getBirthday() {

        
return birthday;

    }


    
public void setBirthday(Date birthday) {

        
this.birthday = birthday;

    }


}


 

代码8.1所示内容定义了两个复合类型:团队(team)和人员(person)类型。使用OGNL表达式示例,如代码8.2所示。

代码8.2  使用OGNL表达式示例

 

package ch8;

import java.util.HashMap;

import java.util.Map;

import ognl.Ognl;

import ognl.OgnlException;

public class TestOGNL {

        
public static void main(String[] args) {

        
// 定义一个Map对象

        Map m 
= new HashMap();

        
//定义一个Team对象

        Team team1 
= new Team();

        team1.setTeamname(
"团队1");

        
//定义一个Person对象

        Person person1 
= new Person();

        person1.setName(
"pla1");

        
//添加team元素

        team1.setPerson(person1);

        
//定义一个Team对象

        Team team2 
= new Team();

        team2.setTeamname(
"团队2");

        
//定义一个Person对象

        Person person2 
= new Person();

        person2.setName(
"pla2");

        
//添加team元素

        team2.setPerson(person2);

        

        
//添加Map元素

        m.put(
"team1", team1);

        m.put(
"team2", team2);

        
try {

            System.out.println(Ognl.getValue(
"team1.teamname", m));

            System.out.println(Ognl.getValue(
"team2.person.name", m));

            System.out.println(Ognl.getValue(
"teamname", team2));

            System.out.println(Ognl.getValue(
"person.name", team2));

        }
 catch (OgnlException e) {

        }


    }


}


 

代码8.2所示内容定义了一个Map类型的嵌套属性,如图8.1所示。

8.1  嵌套属性示意图

运行该示例,控制器显示如下信息:

团队1

pla2

团队2

pla2

 说明 

OGNL可以使用非常简单的表达式来访问多层嵌套属性,为开发者提供了一个有力的工具。

 

分享到:
评论

相关推荐

    转:struts1与struts2的区别

    ### Struts1与Struts2的主要区别 ...综上所述,Struts2相比Struts1在灵活性、可测试性、输入数据处理、表达式语言等方面都有显著改进。这些变化不仅简化了开发过程,也提升了应用程序的整体性能和稳定性。

    Struts2 使用OGNL表达式

    5. **上下文访问**:Struts2 ActionContext提供了一个全局上下文,可以在OGNL表达式中访问请求、session、application等范围的变量。 6. **值栈**:Struts2中的值栈是OGNL的主要工作区域,它存储了Action对象和其他...

    struts2 OGNL表达式

    Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...

    struts2核心文件

    10. **国际化与本地化**: Struts2提供了对多语言的支持,可以通过资源文件轻松实现界面的国际化。 使用Struts2核心jar包时,需要正确配置web.xml以启用Struts2框架,并在项目中引入相应的依赖。开发过程中,还需要...

    struts jstl el表达式示例代码

    struts jstl el表达式示例代码 struts jstl el 表达式 源码

    struts2 OGNL 表达式及各种标签的使用

    Struts2 OGNL(Object-Graph Navigation Language)表达式是一种强大的、动态的数据绑定和脚本语言,广泛应用于Struts2框架中。它允许开发者在视图层与模型层之间灵活地传递数据,增强了MVC架构中的灵活性。本文将...

    struts2 ognl表达式

    Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...

    struts2 OGNL表达式使用

    struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...

    Struts2核心包

    xwork-core-2.2.1.jar:Xwork核心类库,Struts2在其上构建。 ognl-3.0.jar:对象图导航语言(Object Graph Navigation Language),它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    尚硅谷_佟刚_Struts2

    5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。 6. **拦截器**:拦截器是Struts2的核心组件,用于处理请求、验证输入、事务管理、日志...

    struts2官方表达式ognl源码

    - **上下文感知**:OGNL根据当前上下文环境解析表达式,如在Struts2中,它可以访问ActionContext中的值栈。 **2. OGNL在Struts2中的作用** 在Struts2框架中,OGNL负责数据绑定和表达式求值。当用户提交表单时,...

    第四章:struts2中的OGNL.ppt

    第四章:Struts2中的OGNL.ppt详细探讨了Struts2框架中使用OGNL(Object-Graph Navigation Language,对象图导航语言)的关键概念和技术。OGNL作为一种强大的表达式语言,使得开发者能够方便地访问Action携带的数据,...

    struts2 jar包

    4. **标签库**:struts2-dojo-plugin.jar、struts2-tiles-plugin.jar等提供了丰富的标签库,帮助开发者在JSP页面上更方便地构建用户界面。 5. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行...

    STRUTS2站点,STRUTS2学习实例10

    "STRUTS2站点,STRUTS2学习实例10"很可能是针对Struts2框架的一个教学资源,旨在帮助开发者深入理解Struts2的工作原理和实践应用。 在Struts2的学习实例10中,我们可能会涵盖以下几个核心知识点: 1. **Action类与...

    struts2jar.zip

    5. **表达式语言(EL)和OGNL**:Struts2使用OGNL作为默认的表达式语言,用于在视图层与模型层之间传递数据。 6. **Struts2的生命周期**:包括初始化、请求处理、响应生成等阶段。 7. **Action的注解配置**:...

    struts2小程序 struts2代码

    7. **OGNL(Object-Graph Navigation Language)**:Struts2的默认表达式语言,用于在Action与视图之间传递数据。在JSP页面中,可以通过OGNL访问Action的属性。 8. **Validation框架**:Struts2提供了强大的表单...

    struts2所用到的jar包

    10. **测试支持**:Struts2提供了测试框架,如Struts2 TestNG插件,方便进行单元测试和集成测试,确保应用的正确性。 综上所述,Struts2的核心包和IO包是构建基于Struts2的应用程序不可或缺的部分,它们为开发者...

    struts2-showcase.rar

    10. **S2-005安全漏洞**:Struts2-showcase还包含了一些已知的安全漏洞实例,用于教育开发者如何避免和修复这些漏洞。 通过深入研究和分析struts2-showcase项目,开发者能够全面了解Struts2的特性和最佳实践,从而...

Global site tag (gtag.js) - Google Analytics