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>
上一篇: Struts2学习笔记之ValueStack(六)
下一篇: Struts2值传递问题