使用struts2时,我们一般使用ognl表达式将表单字段绑定到对象中的具体属性。已知对象一般被放在一个叫做valuestack的对象上,并且ognl表达式指向这个栈上的属性。实际上,ognl表达式可以根据任何一系列对象求值,而ValueStack只是这些对象中的一个,即默认的那个。
这一系列的可以让ognl表达式取值的对象,叫做ActionContext,struts2幕后一个非常重要的角色。它包含有默认的ValueStack对象,paramters对象,application对象,session对象,attr对象和request对象,而其中最重要最常用的也就是Valuestack对象,所以设计者将它设置为默认取值对象。
假使ActionContext中存在着一个user的对象,若是默认存在于ValueStack中的话,我们用jsp的标签${}去取值,即${user};假使用struts的%转义字符去取值,即%{user}。这是默认的,假如它存在于session中,那么你该使用#session['user']去取值,#操作符会主动命名ActionContext中的session对象,即拿到session的对象,再去取值它下面的user的值。
回到默认的ValueStack对象,它只有一个微妙的地方,当ognl表达式根据Valuestack解析时,它装作一个对象。这个虚拟对象包含了放在上面的所有对象的所有属性。如果相同的属性多次出现且无层次,主次分别的话,栈下面的对象的属性会被栈上层的同名同级属性覆盖,而valuestack正是压入式的存放的对象属性的。
ognl使用%而不是$,虽然这看起来让很多jsp老手时常感到困惑,但是值得放心的是所属的ognl的%转义字符并不是常常用到,由于标签的智能默认行为,jsp标签的$和ognl的%通常是可以统一的,而#操作符,则更好理解,你可以把它跟$和%区分开,单独理解为,它是定位符,定位到Actioncontext中的6个对象中的某一个进而重命名,以获取存放在里面的对象属性。
分享到:
相关推荐
ActionContext是Struts2框架中一个关键的组件,它提供了当前请求上下文的信息,而OGNL(Object-Graph Navigation Language)则是Struts2中的表达式语言,用于在模型和视图之间进行数据传递。下面将详细探讨这两个...
JavaEE ActionContext是Struts2框架中的一个关键组件,它在请求处理过程中起着至关重要的作用,主要用于在不同上下文之间共享...在实际项目中,我们可以利用ActionContext和OGNL的强大功能,实现复杂的数据管理需求。
在Struts2中,`#`符号主要用于访问OGNL上下文和ActionContext。ActionContext是Struts2框架的核心组件之一,它存储了请求处理过程中的各种上下文信息,如请求参数、会话属性、应用级属性等。通过`#parameters`,你...
第5章 数据转移:OGNL和类型转换 84 5.1 数据转移和类型转换:Web应用程序领域的常见任务 85 5.2 OGNL和Struts 2 85 5.2.1 OGNL是什么 85 5.2.2 OGNL如何融入框架 87 5.3 内建的类型转换器 89 5.3.1 立即可用的类型...
### OGNL表达式的理解和应用 #### 一、OGNL简介与基本概念 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架中的默认表达式语言,同时也被广泛...
4. 访问 OGNL 上下文(OGNL context)和 ActionContext:OGNL 允许用户访问 OGNL 上下文和 ActionContext。 5. 操作集合对象:OGNL 允许用户操作集合对象,例如:对 List 或者数组的操作。 在 Struts 2 中,OGNL ...
Struts2将ActionContext与OGNL结合,使得请求参数可以直接在表达式中使用。 5. **安全特性**:在Struts2中,OGNL的不当使用可能导致安全漏洞,如著名的Struts2 OGNL注入攻击。源代码中包含了对这种风险的防护措施,...
总的来说,Struts2的OGNL表达式和ActionContext以及ValuesStack的设计使得数据访问更加灵活和高效。开发者可以方便地在控制器、视图和模型之间穿梭,进行复杂的表达式计算和对象属性操作,同时保持代码的简洁和...
OGNL和EL都是为了简化数据绑定和表达式处理,但它们的设计理念和能力有所不同。了解并熟练掌握两者的特点和用法,能更好地优化Struts2应用的开发过程。在实际开发中,应根据场景选择合适的表达式语言,以提高代码...
OGNL还能访问上下文(如OGNL context和ActionContext)。ActionContext提供了对HTTP请求参数、请求、session、application等范围内的属性的访问。例如,`#parameters`可以用来获取HTTP请求的参数,`#session`可以...
总之,这份“ognl英文帮助文档”对于深入理解OGNL和在Struts2框架中有效利用其功能至关重要。它不仅能够帮助开发者提高代码的效率,还能提升应用程序的安全性。如果你正在或计划使用Struts2,这份文档绝对值得下载和...
- Struts2 ActionContext:OGNL与ActionContext紧密配合,ActionContext存储了请求相关的上下文信息,包括值栈和session等。 - 模板技术集成:FreeMarker、Velocity等模板引擎可以使用OGNL表达式来获取和操作数据...
本案例提供ognl使用详解,测试通过,只需解压放入自己... 4、访问OGNL上下文(OGNL context)和ActionContext 5、操作集合对象 用法:OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用;
在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言,它允许动态地访问和修改对象的属性。它的主要特点包括: 1. **对象导航**:OGNL支持通过点号(`.`)和方括号(`...
6. **上下文变量**:OGNL表达式可以访问当前上下文中的变量,这在MVC框架中非常有用,例如,可以访问ActionContext中的请求参数。 7. **表达式缓存**:为了提高性能,OGNL会缓存已解析的表达式,避免重复解析。 8....
它有很多特点,例如支持对象方法调用、类静态的方法调用和值访问、赋值操作和表达式串联、访问 OGNL 上下文和 ActionContext、操作集合对象等。 在 Struts2 中,OGNL 表达式需要结合 Struts 标签来使用。其中,“%...
在Struts2中,这个值映射通常是ActionContext,它包含了请求和会话中的参数。 4. **对象导航**:OGNL允许通过点号`.`操作符来访问对象的属性,如`obj.property`。如果`property`是一个方法名,OGNL会自动调用这个...
### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 ...综上所述,OGNL和EL表达式在Struts2框架中扮演着重要角色,掌握这些概念和技巧有助于开发者更加高效地进行Web应用程序的开发。
"struts2对Ognl的封装--PropertyAccessor"这个主题主要涉及Struts2框架如何处理OGNL表达式,特别是如何通过PropertyAccessor接口来访问和操作对象的属性。 首先,我们来了解什么是OGNL。OGNL是Struts2的核心组件之...