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(); } } }
相关推荐
2、 EL,全称Express Language,即表达式语言。不要被语言吓倒,它是简单的对象导航语言。有字符串(例如:方法名)和特殊字符组成(例如用.表示调用对应的属性方法)。通过EL,我们可以存、取对象数据,而且还可以...
建立一个Struts2 工程,用Action的属性接收参数,使用Domain Model (实体模型) 接收参数,Struts2_2.1.6版本的中文问题,Struts模块包含,Struts简单数据验证 ,Struts ValueStack(值栈) Debug,Value Stack ...
深入讲解Struts中的ognl和valueStack
十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...
我们知道,Struts2完成参数传递处理工作的基础是OGNL和ValueStack。而在这个 过程中,我也把Struts2所要做的工作大致归纳为两个方面: 1. 对OGNL操作进行封装,完成OGNL表达式所表示的值到Java对象的值传递机制 2. ...
第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标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...
Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...
struts2.0 ValueStack 相关源码
Struts的开发步骤、OGNL、ValueStack、Action核心、Result基本原理、Struts2核心标记库、Struts2拦截器、自定义拦截器、UI标记、非UI标记、资源文件国际化等等实例全面使用。
Struts用的ognl和valueStack(vs)实例
讲解Struts2入门基础,包括Action、Result、ValueStack等,Struts2初学者会有帮助
OGNL表达式 interceptor拦截器 valuestack的存入 /取出
培训主要学习以下几个知识点: 1、制作PPT,讲解栈的特点和使用方法 2、编码实现回文对 3、制作PPT,讲解Struts2中的ValueStack 4、编码改变ValueStack中的对象的顺序
struts2模拟模拟工具,可以实现action访问,我表单属性的自动封装。提供了页面显示和跌带器,利用struts2值栈(valueStack)和对象栈map栈的思想。可以用来了解struts2的执行过程,纯属个人学习
用一个小小的flash来形象的演示struts2中值栈的操作过程,非常直观!
1、什么是值栈 2、值栈的内部结构 3、ActionContext和ValueStatck的关系 4、如何获取值栈对象 5、向值栈存数据 6、从值栈中获取数据
struts2的深入理解内核解析,当请求url时候,struts容器干了什么,action什么时候被创建,valuestack什么时候被创建