(Struts2)OGNL表达式的概述

1、OGNL是Object-Graph  Navigation  Language(对象图导航语言)的缩写

      *   所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其他对象

      *   通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性


2、Struts2框架使用OGNL作为默认的表达式语言

      *   OGNL是一种比EL强大很多倍的语言

      *   xwork提供OGNL表达式

      *   ognl-3.0.5.jar


3、OGNL提供五大类功能

      *   支持对象方法调用

      *   支持类静态的方法调用和值访问

      *   访问OGNL上下文(OGNL context)和ActionContext

      *   支持赋值操作和表达式串联

      *   操作集合对象


4、测试的代码

      *   获取上下文、获取根对象、存储数据,获取值

/**
 * 简单演示OGNL表达式
 * @throws OgnlException
 */
 @Test
 public void run1() throws OgnlException {
     // 上下文对象
     OgnlContext context = new OgnlContext();
     // 获取到根对象
     Object root = context.getRoot();
     // 存储数据
     context.put("name", "小明");
     // 获取值,表达式写法
     Object value = Ognl.getValue("#name", context, root);
     System.out.println(value);  //小明
 }

     *   OGNL表达式方法的调用

/**
 * OGNL表达式方法的调用
 * @throws OgnlException 
 */
@Test
public void run2() throws OgnlException {
	// 上下文对象
	OgnlContext context = new OgnlContext();
	// 获取到根对象
	Object root = context.getRoot();
	// 获取值,表达式写法
	Object value = Ognl.getValue("'haha'.length()", context, root);
	System.out.println(value);  // 4
}

5、在Struts2框架中使用OGNL表达式

      1)Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值

      2)具体在Struts2中如何使用,步骤如下:

               *   需要先引入Struts2的标签库

                           <%@  taglib  prefix="s"  uri="/struts-tags"  %>

               *   使用Struts2标签库提供的标签

                           <s:property  value="OGNL表达式">

      3)在JSP页面使用OGNL表达式

              *   访问对象方法

                         <s:property  value="'hello'.length()" />

     Jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!-- 引入Struts2标签库 -->
<%@ taglib prefix="s" uri="/struts-tags" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h3>条件: 加入值栈中已经存入值了,在JSP页面上值栈中获取值</h3>
	<!-- 
		1.先引入Struts2框架提供的标签库, s标签
		2.可以使用提供的标签(很多,掌握重点的标签)
	 -->
	 
	 <!-- 从值栈中获取值的   value中间编写OGNL的表达式  -->
	 <s:property value="'username'.length()"/>

</body>
</html>

下一篇:值栈(一)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值