1. ValueStack&ActionContext(非常重点:值栈)

    1、针对用户的每次动作访问,都会创建属于自己的ValueStack对象

    2、ValueStack中的的常用方法:功能一定要知道干什么的。实现类OgnlValueStack

  • getContext():返回的是一个Map<String,Object>
  • *getRoot():返回的是一个CompoundRoot。

    CompoundRoot就是一个ArrayList的子类(就是一个List)。实现了一个栈结构

    CompoundRoot():默认的构造方法。实际就是创建一个List集合

    CompoundRoot(List):用一个集合来初始化一个CompoundRoot对象

    cutStack(int):按照集合中的索引,剪出一个新的List集合

    peek():取集合中的第一个元素。get(0)

    pop():从集合中删除第一个元素

    • push(Object):向集合中的第一个元素位置插入数据
      peek():CompoundRoot中的第一个元素。get(0)
    • pop():从CompoundRoot集合中删除第一个元素
    • push(Object):向CompoundRoot集合中的第一个元素位置插入数据
    • size():获取 CompoundRoot这个集合的大小
    • setValue(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
    • setParameter(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
    • findString(String expr):返回的是一个String类型的,否则报错.第一个参数,是OGNL表达式。
    • findValue():返回的是一个Object。第一个参数,是OGNL表达式。

     

    3、ActionContext

    static ThreadLocal<ActionContext> actionContext = new ThreadLocal<ActionContext>();

    每个线程都会有唯一的ActionContext,且一个线程中只有一个ActionContext。

    getApplication():返回的是一个Map

    getContext():放回的当前线程上的ActionContext对象

    getContextMap():返回ActionCOntext中的那一个Map

    getParameters():返回的是一个Map

    getSession():返回的是一个Map

    getValueStack():返回的是当前线程中的ValueStack实例

    get(String):从ActionContext的Map中获取数据

     

    最终总结:

    4、ServletActionContext决定contextMap中会存哪些数据

    总结:都是从ActionContext的那个大Map中获取的。

     

    5、在执行动作方法前,contextMap中放了以下东西

    contextMap中

     

    key 

    value 

    备注

    request

    ServletRequest中的那个Map

     

    session

    HttpSession中的那个Map

     

    application

    ServletContext中的那个Map

     

    parameters

    请求参数Map<String,String[]>

     

    attr

    也是一个AttributeMap

    获取数据依次从contextMap中的requestMap、sessionMap、applicationMap中搜索

         

     

十八、ValueStack&ActionContext(非常重点:值栈)的更多相关文章

  1. java并发编程(十八)阻塞队列和阻塞栈

    阻塞队列 阻塞队列是Java 5并发新特性中的内容,阻塞队列的接口是java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue.Dela ...

  2. Struts2 - 值栈(ValueStack)

    1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...

  3. valueStack(值栈)

    值栈 值栈(ValueStack)就是 OGNL 表达式存取数据的地方.在一个值栈中,封装了一次请求所需要的所有数据. 在使用 Struts2 的项目中,Struts2 会为每个请求创建一个新的值栈, ...

  4. OGNL表示式使用和值栈

    另外值得参考博客:http://blog.csdn.net/resigshy/article/details/7560573 OGNL是Object Graphic Navigation Langua ...

  5. Java中的值栈

    OGNL表示式使用 和 值栈 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的表达式 ...

  6. Struts2知识点小结(三)--值栈与ognl表达式

    1.问题一 : 什么是值栈 ValueStack        回顾web阶段 数据交互问题?        客户端提交数据  到  服务器端    request接受数据+BeanUtils实体封装 ...

  7. 值栈(Structs2)

    1. 关于值栈: 1). 登陆 时, ${userName} 读取 userName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ValueStack: I. ...

  8. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 关于Struts2中的值栈与OGNL表达式

    1.1.1    OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL     :OGNL比EL功能强大很多倍. 它是一个开源项目. ...

  10. 值栈和OGNL 之 7.1 值栈

    7.1  值栈 7.1.1  值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Resu ...

随机推荐

  1. laravel查询构造器中别名的问题

    Laravel框架对数据库的封装是比较完善的,用起来也比较方便.但之前有一个问题一直困扰着我,就是利用laravel作查询时.如果想给表名或是字段名起别名是比较麻烦的事.但翻阅它的文档不难发现,它提供 ...

  2. laravel加入验证码类几种方法 && Laravel引入第三方库的方法

    1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上 ...

  3. gerrit 配置 apache2 反向代理(转载)

    Apache 2 Configuration To run Gerrit behind an Apache server using mod_proxy, enable the necessary A ...

  4. .nil? .empty? .blank? .present? in Ruby on Rails

    We get confused when there are many options to choose from. Same is the case when it comes to use an ...

  5. springmvc 中RequestMapping注解的使用

    1.RequestMapping注解既可以修饰方法,又可以修饰类型,类型指定的url相对于web跟路径,而方法修饰的url相对于类url: 2.RequestMapping的几个属性: value:用 ...

  6. Java如何获取文件编码格式

    1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK.  按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原 ...

  7. 九度OJ1084

    这道题一旦想开,其实思想十分简单的. 首先考虑n为奇数的情况,不难知f(n)=f(n-1).(只需要把n的所有拆分式-1即可……) 然后考虑n为偶数的情况,将拆分式划分为两种情况:一种是式子中带1的, ...

  8. MongoDB 语法使用小结

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的     他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据 ...

  9. weblogic92 :BEA-101020

    weblogic92 启动时后台出现错误:<BEA-101020> 解决方案: 1.删除临时文件: user_projects/domains/base_domain/servers/Ad ...

  10. [kuangbin带你飞]专题九 连通图

        ID Origin Title   76 / 163 Problem A POJ 1236 Network of Schools   59 / 177 Problem B UVA 315 Ne ...