`
pwpw1218
  • 浏览: 9226 次
社区版块
存档分类
最新评论

Struts2学习笔记之OGNL表达式(五)

阅读更多

Struts2学习笔记之OGNL表达式(五)

 

什么是OGNL

          Object Graph Navigation Language ,是一门功能强大的表达式语言,类似于EL。

 

          它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,

 

   调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属      性。

 

 

         OGNL是独立的开源组件

         Struts2对Ognl进行改造和封装,下面我们来简单的介绍下OGNL在Struts2中的使用

 

Struts2中如何使用OGNL表达式

 

1. OGNL访问基本属性

2. OGNL访问实体对象

3. OGNL访问数组/集合

4. OGNL访问Map

5. OGNL运算

6. OGNL调用对象方法

7. OGNL创建集合

8. OGNL创建Map

 

Action中准备数据:

 

package com.mscncn.struts.ch01.web;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.mscncn.struts.ch01.entity.User;

public class OGNLAction {
	/**
	 * 普通属性
	 */
	private String realName;
	private Integer age;
	/**
	 * 实体对象
	 */
	private User user;
	/**
	 * 数组
	 */
	private String[] langs;
	/**
	 * 集合
	 */
	private List<String> cities;
	private Map<String, String> dataMetas;
	public String ognl(){
		//普通属性
		realName="www.mscncn.com";
		age=20;
		//实体对象
		user=new User();
		user.setUserName("mscncn");
		user.setPassword("mscncn's password");
		//数组
		langs=new String[]{"java","php","c#","Object-c"};
		//集合
		cities=new ArrayList<String>();
		cities.add("北京");
		cities.add("上海");
		cities.add("深圳");
		dataMetas=new HashMap<String, String>();
		dataMetas.put("username", "scott");
		dataMetas.put("password","tigger");
		return "ok";
	}

	public String getRealName() {
		return realName;
	}

	public void setRealName(String realName) {
		this.realName = realName;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String[] getLangs() {
		return langs;
	}

	public void setLangs(String[] langs) {
		this.langs = langs;
	}

	public List<String> getCities() {
		return cities;
	}

	public void setCities(List<String> cities) {
		this.cities = cities;
	}

	public Map<String, String> getDataMetas() {
		return dataMetas;
	}

	public void setDataMetas(Map<String, String> dataMetas) {
		this.dataMetas = dataMetas;
	}
}

 

 struts.xml 配置action:

 

<action name="ognl" class="com.mscncn.struts.ch01.web.OGNLAction" 
      method="ognl">
	<result name="ok">
		/ognl.jsp
	</result>
</action>

 

ognl.jsp:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
 <%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<h1>Hello Struts2</h1>
		<h1>========el表达式========</h1>
		真实姓名:${realName }<br/>
		年龄:${age}<br/>
		账号:${user.userName }<br/>
		密码:${user.password }<br/>
		<h1>========ognl表达式========</h1>
		<s:debug />
		<h1>1. 访问基本属性</h1>
		<h2>姓名:<s:property value="realName" />  </h2>
		<h2>年龄:<s:property value="age" />  </h2>
		<h1>2. 访问对象属性</h1>
		<h2>用户名:<s:property value="user.userName" />  </h2>
		<h2>密码:<s:property value="user.password" />  </h2>
		<h1>3. 访问数组/集合的值</h1>
		<h2>语言:<s:property value="langs[0]"/></h2>
		<h2>所有语言:<s:property value="langs"/></h2>
		<h2>城市: <s:property value="cities[0]" /> </h2>
		<h2>所有城市: <s:property value="cities" /> </h2>
		<h1>4. 访问Map</h1>
		<h2>元数据-用户名: <s:property value="dataMetas.username"/> </h2>
		<h2>元数据-密码: <s:property value="dataMetas.password"/> </h2>
		<h1>5. 运算</h1>
		<h2> 介绍自己:<s:property value="'my name is '+realName"/> </h2>
		<h2> 10年后我的年龄: <s:property value="age+10"/> </h2>
		<h1>6. 调用对象的方法</h1>
		<h2>user.toString():   --<s:property value="user.toString()" /></h2>
		<h1>7. 创建集合</h1>
		<h2>集合: <s:property value="{'a','b','c'}"/> </h2>
		<h2>集合类型: <s:property value="{'a','b','c'}.getClass().getName()"/> </h2>
		<h1>8. 创建Map</h1>
		<h2>Map:<s:property value="#{'name':'zs','age':30 }"/>  </h2>
		<h2>Map类型:<s:property value="#{'name':'zs','age':30 }.getClass().getName()"/>  </h2>
</body>
</html>

 

分享到:
评论

相关推荐

    struts2 OGNL语言学习笔记

    Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习笔记(完美总结)——转自OPEN经验库

    OGNL是Struts2中用于对象属性访问和表达式语言,它允许在Action、ValueStack和视图层之间传递数据。ValueStack是一个对象栈,它持有ActionContext上下文中的所有对象,包括Action实例、ActionForm、Session、Request...

    struts2学习笔记总结

    OGNL是Struts2的表达式语言,用于在Action和视图之间传递数据。它能直接访问Java对象的属性,支持表达式计算,简化了视图层的数据绑定。 六、插件和国际化 Struts2有丰富的插件库,如Tiles、Freemarker、JSON等,...

    struts2四天的学习笔记

    13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...

    Java相关课程系列笔记之十三Struts2学习笔记

    Struts2是在Struts1的基础上进行改进的,吸取了其他框架的优点,如WebWork,提供了更强大的拦截器、OGNL表达式语言等特性。 1.5 衡量一个框架的标准 包括易用性、灵活性、性能、社区支持、文档完善度等。 1.6 ...

    Struts2_OGNL 笔记

    Struts2_OGNL笔记主要关注的是如何在Struts2框架中使用OGNL(Object-Graph Navigation Language)表达式语言。OGNL作为一种强大的表达式语言,常用于Struts2的视图层,允许开发者轻松地访问和操作Java对象的属性。 ...

    OGNL学习笔记,包含struts2中ognl的各种用法

    在示例代码中,`&lt;s:property&gt;`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别获取了Request、Session和Application范围内的属性值。这展示了OGNL如何灵活地访问不同级别的数据。 其次...

    Struts2学习笔记

    4. ValueStack:值栈是Struts2的数据容器,它将Action对象和OGNL表达式结合,方便在视图层获取和设置模型数据。 5. OGNL(Object-Graph Navigation Language):OGNL是Struts2中的表达式语言,用于在Action对象和...

    struts2学习笔记

    本学习笔记将详细阐述Struts2的核心概念、发展历程、使用步骤以及OGNL技术。 一、Struts2概述 1.1 为什么要用Struts 在传统的JSP开发中,模型与视图、控制器的耦合度较高,导致代码维护困难。Struts2引入了MVC...

    struts2学习笔记和源码

    这份"struts2学习笔记和源码"资源是学习这个框架的理想材料,特别适合初学者。 一、Struts2框架基础 Struts2是Apache软件基金会下的一个项目,它是Struts1的升级版,弥补了Struts1的一些不足,如动作映射和拦截器等...

    北京圣思园Struts2 全套笔记 课件 详解

    学习者将能够了解Struts2的架构,学会如何创建Action,配置struts.xml,编写拦截器,使用OGNL表达式,以及如何处理异常和实现视图的多样化。此外,课程可能还会涉及Struts2的安全问题和最佳实践,如防止XSS、CSRF等...

    Struts1及14. Struts2学习笔记

    本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...

    【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法

    在"【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法"中,我们主要探讨的是如何在Struts2中有效地获取并处理用户提交的数据。以下是对这三种方法的详细解析: ### 1. 使用Action属性 Struts2的核心是...

    Struts2 学习笔记

    03 OGNL表达式语言 23 04 Struts2-Tags 28 Struts2标签目录 28 一、 property标签 28 二、 set标签 29 三、 bean标签 29 四、 标签-少使用 29 五、 If elseif else 30 六、 Iterator标签 31 七、 Theme 31 05设计...

Global site tag (gtag.js) - Google Analytics