欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-18 08:37:37
...

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>

 

相关标签: strtus2 ognl el