(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标签库提供的标签

                           

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

              *   访问对象方法

                         

     Jsp代码:

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


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




Insert title here



	

条件: 加入值栈中已经存入值了,在JSP页面上值栈中获取值


下一篇:值栈(一)

你可能感兴趣的:(Struts2)