走进Struts2(五)— 值栈和OGNL】的更多相关文章

Struts2的值栈和OGNL牛逼啊 一 值栈简介: 值栈是对应每个请求对象的一套内存数据的封装,Struts2会给每个请求创建一个新的值栈,值栈能够线程安全的为每个请求提供公共的数据存取服务. 二 OGNL介绍: (1)基本数据: OGNL 是对象图导航语言 Object-GraphNavigationLanguage 的缩写,它是一种功能强大的表达式语言. OGNL 访问 ValueStack 数据 <s:propertyvalue=”account”/> OGNL 访问 ActionCo…
值栈 1.值栈是什么? 简单说:就是相应每个请求对象的轻量级的内存数据中心. Struts2引入值栈最大的优点就是:在大多数情况下,用户根本无须关心值栈,无论它在哪里,不用管它里面有什么,仅仅须要去获取自己须要的数据就能够了. 2.值栈能干什么? 简单说:就是可以线程安全的为每个请求提供公共的数据式服务. 3.值栈包括Map栈和对象栈,值栈通过ActionContext的getValueStack()方法来获取值栈,可是在通常情况下,向valuestack中压入值都是由Struts2去完毕的.而…
1.问题一 : 什么是值栈 ValueStack        回顾web阶段 数据交互问题?        客户端提交数据  到  服务器端    request接受数据+BeanUtils实体封装        服务器端数据 在页面上显示        在服务器端将数据存储到request域中  页面中通过el+jstl完成数据展示            struts2阶段,数据交互问题?        客户端提交数据  到  服务器端    属性驱动和模型驱动        服务器端数据…
值栈(重要)和ognl表达式 1.  只要是一个mvc框架,必须解决数据的存和取的问题 2.  Struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构 3.  把数据存在值栈中,在页面上利用ognl表达式显示出来 讨论的问题 1.  讨论值栈的生命周期 2.  值栈的内存结构 3.  通过什么样的方法把数据放入到值栈中 4.  显示出来 值栈的内存结构 获取值栈的路径 说明: 1.  值是一样的,说明只有一个对象 2.  因为有一种是从request域中获取的,所以是一次请求 内存结构…
1.1.1    OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL     :OGNL比EL功能强大很多倍. 它是一个开源项目. Struts2框架使用OGNL作为默认的表达式语言. OGNL相对其它表达式语言具有下面几大优势: 1.支持对象方法调用,如xxx.doSomeSpecial(): 2.支持类静态的方法调用和值访问,表达式的格式: @[类全名(包括包路径)]@[方法名 |  值名],例如: @java.lang.S…
目录: 一.值栈 二.OGNL表达式 一.值栈(ValueStack) 1.定义      ValueStack贯穿整个Acton的生命周期,每个Action类的对象实例都拥有一个ValueStack对象,相当于一个数据中转站,在其保存当前的Action对象和其他对象.   2.结构      在ValueStack对象内部有两个逻辑部分.       ObjectStack:  root属性,是一个ArrayList,包含Action对象和其他对象.       ContextMap:  co…
仅仅是学习记录.把我知道的都说出来 一.值栈的作用 记录处理当前请求的action的数据. 二,小样例 有两个action:Action1和Action2 Action1有两个属性:name和passwd Action2有两个属性:name2和passwd2 请求从Action1进入.chain方法导向Action2 Struts.xml配置信息: <? xml version="1.0" encoding="UTF-8"? > <!DOCTYPE…
1.ValueStack 和 ActionContext 的关系与区别: -- 相同点:它们都是在一次HTTP请求的范围内使用的,它们的生命周期都是一次请求 -- 不同点:ValueStack 分为对象栈(Object Stack) 和 Map栈(Map Context),而ActionContext就是一个映射的Map结构 --  联系 :  ValueStack.getContext()方法得到的Map 其实就是ActionContext 的Map.在查看Struts2的源代码可知(Stru…
ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContext ValueStack与ActionContext的联系和区别: 如何获得ActionContext: 如何向ActionContext中存入值: 如何从ActionContext中读取值: HttpServletRequest类或request的Map 使用HttpServletRequest类…
ValueStack (值栈): 1.贯穿整个Action的生命周期(每个Action类的对象实例都拥有一个ValueStack对象).相当于一个数据的中转站.在其中保存当前Action对象和其他相关对象. 2.Struts2框架把ValueStack对象保存在名为"struts.valueStack"的请求属性中 3.在ValueStack对象的内部有两个逻辑部分: –ObjectStack: Struts 把Action 和相关对象压入 ObjectStack中 –ContextM…
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:值栈简介 值栈是对应每个请求对象的一套内存数据的封装,Struts2 会给每个请求创建一个新的值栈. 值栈能够线程安全地为每个请求提供公共的数据存取服务. 第二节:OGNL 引入 OGNL 是对象图导航语言Object-Graph Navigation Language 的缩写,它是一种功能强大的表达式语言. OGNL 访问ValueStack 数据 <s:proper…
7.1  值栈 7.1.1  值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写. Struts2中关于值栈的另外一个很激动人心的特性就是:大多数情况下,你根本无需关心值栈,你不用管它在哪里,不用管它里面有什么,你只需要去获取自己需要的数据就可以了.也就是说,你…
值栈(ValueStack) http://www.cnblogs.com/bgzyy/p/8639893.html 这是我的有关 struts2 的第一篇文章,对于里面我们说到的一个 struts2 HelloWorld 小练习,即在输入框输入信息提交后在另外一个页面显示输入的信息,显示页面的代码如下: UserName: ${userName}<br> Email: ${email}<br> Address: ${address}<br> 为什么这样一个简单的标签就…
引言 在我们开发过程中,往往会使用一个对像传递到一个具体的action中,之后到跳转页面中访问对应对象的具体的参数. 比如:我们搭建一个struts2项目: 回顾下如何搭建strut2: 1.下载的struts2开发包(struts-2.3.31-all.zip): 2.解压struts-2.3.31-all.zip,并把\apps\struts2-blank.war解压: 3.取出\struts2-blank\WEB-INF\lib下的所有jar包到Struts_01\WebContent\W…
1.值栈的介绍 1.1 值栈的介绍: 值栈是对应每一个请求对象的数据存储中心,struts2会给每一个请求对象创建一个值栈,我们大多数情况下不需要考虑值栈在哪里,里面有什么,只需要去获取自己需要的数据就可以了,这样就大大的降低了开发人员的工作量和逻辑复杂性. 1.2 值栈的作用: 值栈能够线程安全的为每一个请求对象提供公共的数据存取服务.它可以统一管理页面和action之间的数据,供action.result.interceptor等使用.值栈和请求时一一对应的,也是唯一对应的,每一个请求有且只…
在值栈(前篇)我们学习了值栈的基本知识,接下来,来看看在程序中具体如何使用值栈. 1 ActionContext的基本使用 1.1 如何获取? 要获取ActionContext有两个基本的方法,如果在不能获取到ActionInvocation的地方,可以直接使用ActionContext一个静态的getContext方法,就可以访问到当前的ActionContext了,示例如下: ActionContext ctx = ActionContext.getContext(); 如果在能获取到Act…
1 值栈是什么? 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写.Struts2中关于值栈的另外一个很激动人心的特性就是:大多数情况下,你根本无需关心值栈,你不用管它在哪里,不用管它里面有什么,你只需要去获取自己需要的数据就可以了.也就是说,你可以隐式的使用值栈.当然,…
1. 问题一:什么是值栈? * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueStack ---- 值栈对象 (OGNL是从值栈中获取数据的 ) * Action是多例的,有一起请求,创建Action实例,创建一个ActionContext对象,代表的是Action的上下文对象,还会创建一个ValueStack对象. * 每个Action实例都有一个ValueStack…
值栈 Value Stack 值栈是Struts2框架的核心概念.所有的核心组件都以某种方式与之进行交互,它提供对上下文信息和执行环境中元素的访问机制.值栈的内容由如下4个层级组成. 1.临时对象 这些对象在请求处理中需要临时保存,比如集合中当前正在被迭代的元素. 2.模型对象 当action实现了ModelDriven接口,模型对象就会被存放在栈中,在action对象前.如果action没有实现该接口,这个级别的内容将不存在. 3.Action对象 此对象是当前正在执行的action. 4.命…
值栈中的两个逻辑部分: 1.属性context,为OGNLContext类型,实际为ActionContext对象的一个引用,本质是一个Map,里面存放的各种Map,如request,session,application,attr 访问它里面的数据,用OGNL的写法是<s:property value="#session.username"/><!-- 前面加#后面的为固定的几个,如request,session,application,attr --> 2.…
Struts2在初始化Action的时候会先向值栈中压入一个action对象,里面包含了各个属性,这些属性是怎么被压进去的?或者说是根据什么来压入的?直到2016年5月5日才理解,原来是在初始化action的时候,根据antion中定义的getter方法来向值栈中压属性的,而单纯的在action中定义的属性,但没有定义getter方法的属性并不会被压入到值栈中,例如,有一个Action叫做UserAction: class UserAction{ private String name; pri…
什么是值栈?struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值.,特点:先进后出.如果将它当做一个容器的话,而这个容器有两个元素,那么最上面的元素叫做栈顶元素,也就是所说的压栈. action和servlet区别:每次访问的action的时候,都会创建一个新的action对象,而servlet只会创建一个对象.每次访问action都会创建一个action对象,action对象里面都且只有一个值栈的对象. 我们可以使用 <s:debug></s:debug>…
ValueStack:struts2的一个存放数据的数据结构(核心) ValueStack大致能够理解为:由Map和对象栈组成 ValueStack作用范围:一个请求,用它来取代request的作用域. 当来了一个请求时,便创建出一个ValueStack,并进行一些初始化. 往Map中放:request=...,session=...,application=...,attr=...,parameters=....等等 往对象栈中放:action和还有一个默认对象 拦截器:ModelDriven…
Ognl经常使用标签:   1.s:debug       假设把该标签放入到s:iterator中能够看到当前正在迭代的元素的状态    2.s:property       1.输出       2.value属性:值能直接跟ognl表达式       3.假设value属性不写.则默认输出栈顶的元素    3:s:iterator标签       (1).iterator迭代Collection,Map,Object[],还能够以组合的形式迭代       (2).当前正在迭代的元素在栈顶…
struts2中,OGNL访问值栈的时候查找的顺序是什么?请排序:模型对象.临时对象.固定名称的对象.Action对象 解答:struts2的值栈排列顺序为:1).临时对象:2).模型对象:3).Action对象:4).固定名称对象(如#application, #session, #request等对象).…
大致内容: ognl概述 ognl入门 值栈 一.OGNL概述 OGNL,全称为Object-Graph Navigation Language,对象图导航语言 它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, 它旨在提供一个更高的更抽象的层次来对Java对象图进行导航. struts2自带的表达式语言就是OGNL >支持对象方法调用 >支持类静态方法调用和值访问 >[主要用法]在struts2中操作值栈 和struts2标签一起使用来操作值栈 OGNL不是struts2…
前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta…
The framework uses a standard naming context to evaluate OGNL expressions. The top level object dealing with OGNL is a Map (usually referred as a context map or context). OGNL has a notion of there being a root (or default) object within the context.…
A.值栈概述 值栈(ValueStack),通俗的来说就是Struts2里面用来管理和存储数据的东西.struts2项目部署运行后,底层会创建一个action实例,同时也会在内存上划分一块区域,这个区域就是值栈,该值栈对象会贯穿整个Action生命周期,用来存储这个过程中的数据. B.值栈结构 首先,我们一起去看看struts2中值栈在哪里.找到xwork-core--->com.opensymphony.xwork2.util------>ValueStack 这个ValueStack是接口…
这里先添加下在项目遇到的问题: 这两天在做论坛项目的时候,犯了一个错误:将数据放入值栈中,结果jsp页面获取不到. 困扰了许久: 总结如下: (1)每个action对应相应页面的值栈中值的获取,在属于此action的页面上面如果采用OGNL或者EL表达式获取的值都是从此action中获取的.不要将action对应的页面搞乱了 (2)关于EL表达式获取值栈中心的:map和对象栈stack中的值的获取方式:对于两者的获取方式都是${}这种方式,不分#的. (3)jsp页面的参数获取的形式: 举个例子…