`
wanxiaotao12
  • 浏览: 455991 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2的ValueStack

 
阅读更多

Struts2 ValueStack & ActionContext & OGNL 关系小结

原生的OGNL三要素:

  1.expression 求值表达式——首先会被解析成对象树

  2.root object 根对象——默认的操作对象

  3.context OGNL执行环境——OGNL执行的上下文环境

  OGNL context是一个Map结构,ognl.OgnlContext类implements Map接口,root对象也在context里面,并且做这一个特殊的对象处理,具体表现为对root  对象的操作不需要加#指示符号(并且加上了#一定取不到root对象里面的值)。

 

在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等

 

Ognl从根中取属性, 如果没有则抛异常, 

从其他上下文中取属性, 如果没有, 不抛异常,返回为null

import org.junit.Test;

public class OgnlTest {

	@Test
	public void test1() {
		OgnlContext context = new OgnlContext();
		context.put("name", "zhangsan");
		context.put("age", 100);
		
		Person person = new Person();
		person.setName("wan");
		context.put("person", person);
		
		Person root = new Person();
		root.setName("root");
		

		try {
			//不带#号, 找root根的属性
			System.out.println(Ognl.getValue("name", context, root));
			//不带#号,找root根的属性,找不到, 则抛异常ognl.NoSuchPropertyException: com.ognl.Person.person1
//			System.out.println(Ognl.getValue("person1", context, root));
			
			System.out.println(Ognl.getValue("#name", context, root));
			System.out.println(Ognl.getValue("#person", context, root));
			//不存在的属性, =null
			System.out.println(Ognl.getValue("#person1", context, root));
			System.out.println(Ognl.getValue("#person.name", context, root));
			
			//从"hello world"的根里面找name属性, 找不到抛异常
			System.out.println(Ognl.getValue("name", context, "hello world"));
			
		} catch (OgnlException e) {
			e.printStackTrace();
		}

	}

}

 

分享到:
评论

相关推荐

    Struts2中关于ValueStack的一些操作

    2、 EL,全称Express Language,即表达式语言。不要被语言吓倒,它是简单的对象导航语言。有字符串(例如:方法名)和特殊字符组成(例如用.表示调用对应的属性方法)。通过EL,我们可以存、取对象数据,而且还可以...

    马士兵Struts2笔记2013

    建立一个Struts2 工程,用Action的属性接收参数,使用Domain Model (实体模型) 接收参数,Struts2_2.1.6版本的中文问题,Struts模块包含,Struts简单数据验证 ,Struts ValueStack(值栈) Debug,Value Stack ...

    Struts中的ognl和valueStack

    深入讲解Struts中的ognl和valueStack

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    Struts2中的参数传递

    我们知道,Struts2完成参数传递处理工作的基础是OGNL和ValueStack。而在这个 过程中,我也把Struts2所要做的工作大致归纳为两个方面: 1. 对OGNL操作进行封装,完成OGNL表达式所表示的值到Java对象的值传递机制 2. ...

    Struts2 in action中文版

    第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...

    Struts2 Value Stack Contents 中取值、多个集合数组

    Struts2 Value Stack Contents 中取值、多个集合数组示例

    struts2 学习例子

    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...

    struts2 标签库使用文档

    Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...

    xwork-sources

    struts2.0 ValueStack 相关源码

    Struts2练习Demo以及随笔

    Struts的开发步骤、OGNL、ValueStack、Action核心、Result基本原理、Struts2核心标记库、Struts2拦截器、自定义拦截器、UI标记、非UI标记、资源文件国际化等等实例全面使用。

    Struts用的ognl和valueStack(vs)实例

    Struts用的ognl和valueStack(vs)实例

    Struts2基础教程

    讲解Struts2入门基础,包括Action、Result、ValueStack等,Struts2初学者会有帮助

    Struts2框架基础 二

    OGNL表达式 interceptor拦截器 valuestack的存入 /取出

    在线培训:ValueStack

    培训主要学习以下几个知识点: 1、制作PPT,讲解栈的特点和使用方法 2、编码实现回文对 3、制作PPT,讲解Struts2中的ValueStack 4、编码改变ValueStack中的对象的顺序

    struts2模拟

    struts2模拟模拟工具,可以实现action访问,我表单属性的自动封装。提供了页面显示和跌带器,利用struts2值栈(valueStack)和对象栈map栈的思想。可以用来了解struts2的执行过程,纯属个人学习

    struts2的值栈

    用一个小小的flash来形象的演示struts2中值栈的操作过程,非常直观!

    linjin101#javaStudy#Struts2中的OGNL和值栈ValueStack1

    1、什么是值栈 2、值栈的内部结构 3、ActionContext和ValueStatck的关系 4、如何获取值栈对象 5、向值栈存数据 6、从值栈中获取数据

    struts2的深入理解内核解析

    struts2的深入理解内核解析,当请求url时候,struts容器干了什么,action什么时候被创建,valuestack什么时候被创建

Global site tag (gtag.js) - Google Analytics