`

ActionContext和OGNL

 
阅读更多

使用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个对象中的某一个进而重命名,以获取存放在里面的对象属性。

分享到:
评论

相关推荐

    struts2中的ActionContext与ognl

    NULL 博文链接:https://lijiejava.iteye.com/blog/628636

    Struts2 in action中文版

    第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表达式java使用案例详解(测试通过)

    本案例提供ognl使用详解,测试通过,只需解压放入自己... 4、访问OGNL上下文(OGNL context)和ActionContext 5、操作集合对象 用法:OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用;

    struts2_OGNL表达式ActionContext及valuesStack

    struts2 OGNL,struts2 表达式语言,Struts2 中OGNL表达式的用法,Struts2 #,表达式语言的好处,Struts2 $,struts2 井号,星号,百分号

    struts2OGNL表达式ActionContext及valuesStack.pdf

    struts2OGNL表达式ActionContext及valuesStack.pdf

    OGNL表达式struts2标签

    OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言。是一种可以方便地操作对象属性的开源表达式语言。... 4、访问OGNL上下文(OGNL context)和ActionContext; 5、操作集合对象。

    OGNL表达式语言.txt

    Ognl有一个上下文(Context)的概念,其实就是一个Map结构,它实现了java.utils.Map接口,Struts2中的上下文的实现为ActionContext。 结构图: 当Struts2接受一个请求时,会迅速创建ActionContext,ValueStack,...

    西安领航核心项目Struts2重点、难点总结

    对Struts2框架中的相关知识还有困惑的同学有福了,此次上传的是西安领航何足道老师的核心项目Struts2部分的重点难点的归纳总结,...主要包括的知识有Action的动态调用方法、值栈、拦截器、ActionContext、Ognl表达式等

    JavaEE ActionContext存取数据示例

    JavaEE ActionContext存取数据示例

    基于struts2注册登录ActionContext.zip

    从而允许与业务逻辑控制器 与 servlet-api分离,避免了侵入性(所谓侵入性就是指的这个架构设计出来的部件对系统的影响范围,标签库几乎可以完全替代JSTL的标签库,并且 struts2.x支持强大的ognl表达式。可用于软件...

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

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

    Java开发技术

    struts2 中 OGNL表达式的使用 GNL是Object Graph Navigation Language的简称,详细相关的信息可以参考:http://www.ognl.org... 访问OGNL上下文(OGNL context)和ActionContext; 5. 操作集合对象。

    Struts2 s2-061 Poc分析1

    简介分析性。2. 已实例类的法调 (OgnlContext 中的对象),不允许调静态法idea 中可以通过 ActionContext.actionContex

    精讲Struts2

    精简全面讲解Struts 2.0Struts2产生背景 工作原理 实现步骤 标签 命名空间 转换器 国际化 输出 令牌机制 拦截器 表单校验(jQuery.validate验证框架) ...OGNL(ActionContext StackContext ValueStack区别)

    Struts2帮助```````

    一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置文件模块化包含(include) 17 十四、 默认的...

    Struts2 学习笔记

    一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置文件模块化包含(include) 17 十四、 默认的...

    struts2深入浅出(备java基础,javaweb,javaee,框架)

    Struts2框架介绍、工作原理与架构分析、6大配置文件分析使用通配符定义action、动态方法调用,ActionContext及ServletActionContext使用,模型驱动、属性驱动,默认转换器的介绍,中的表单校验,中的国际化,文件...

Global site tag (gtag.js) - Google Analytics