008——struts2的值栈

值栈:能够线程安全地为每个请求提供公共的数据存取服务。Struts2会为每次请求创建一个新的值栈,值栈和请求是一一对应的,不同的请求,值栈也不一样,而值栈封装了一次请求所有需要操作的相关的数据

值栈分类:

狭义值栈:通常指实现com.opensymphony.xwork2.util.ValueStack接口的对象,目前就是com.opensymphony.xwork2.ognl.OgnlValueStack对象,狭义值栈存放OGNL可以存取访问的数据:

  • Action的实例,可以通过OGNL访问Action中的属性
  • OGNL表达式运算的值,可以设置到值栈中,可以主动访问值栈对象,强行设置
  • OGNL表达式产生的中间变量
广义值栈:指的是ActionContext的对象,ActionContext是Action运行的上下文,每个ActionContext是一个基本的容器,包含着Acttion运行需要的数据,比如请求参数、会话等。
ActionContext是线程安全的,每个线程都有一个独立的ActionContext,这样就不用担心值栈中值的线程安全问题了。ActionContext里面存放有很多的值,典型如下:
  • Request的parameters:请求中的参数,要注意这里的数据是从请求对象中复制出来的,因此这里数据的变化是不会影响到请求对象里面的参数的值的
  • Request的Attribute:请求中的属性,这里其实是一个Map,存放着请求对象的属性数据,这些数据和请求对象的Attribute是连动的
  • Session的Attribute:会话中的属性,这里其实是一个Map,存放着会话对象的属性数据,这些数据和会话对象的Attribute是连动的
  • Application的Attribute:应用中的属性,这里其实是一个Map,存放着应用对象的属性数据,这些数据和应用对象的Attribute是连动的
  • Value Stack:也就是狭义值栈,ActionContext以value stack作为被OGNL访问的根,简单地说,OGNL在没有特别指明的情况下,访问的就是value stack里面的数据
  • attr:在所有的属性范围中获取值,一次搜索page,request,session,application
ActionContext的使用:
(1)获取
  • ActionContext ctx = ActionContext.getContext();
  • ActionContext ctx = actionInvocation.个体InvocationContext();
(2)使用:ActionContext主要的功能是用来存放数据的,典型的方法如下:
  • get(String key):根据keycongActionContext当前的存储空间里面获取相应的值
  • put(String key,Object value):把值存储在ActionContext的存储空间里面
  • Map<String,Object> getAppliaction():返回ServletContext中存储的值
  • Map<String,Object> getSession():返回HttpSession中存储的值
  • Map<String,Object> getContextMap():返回当前context存储的值
  • Map<String,Object> getParameters():返回HttpServletRequest()对象里面存储的参数
  • Value Stack 个体ValueStack():获取OGNL的值栈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值