ActionContextMap概念介绍

ActionContextMap:是每次请求访问时存储数据的对象,每一次请求都会创建contextMap,我们可以把数据存放到map中。

key

value

说明

value stack

List集合

以栈的方式来存储数据

Request

Map<String, Object>结构

以键值对的方式存储请求范围的数据

session

Map<String, Object>结构

以键值对的方式存储会话范围的数据

Application

Map<String, Object>结构

以键值对的方式存储应用范围的数据

Action

Object类型

当前访问的Action动作类对象

Parameters

Map<String, Object>结构

存储请求参数

Attr

Map<String, Object>结构

根据key从page,request,session,then application scopes依次查找数据

每一个请求访问时都会创建一个contextMap的对象,ValuesStack和contextMap的数据是关联的,可以相互转换的。

我们的数据采用两种存储的结构来存储,一个是valuesStack (Set(Map)),contextMap(map)

1.在contextMap中存取数据

  • 在请求范围内存储数据
package action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

public class PersonAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        System.out.println(username);
        // 获得动作类的上下文
        /**
         * ActionContext包含了contextmap和valuestack
         */
        ActionContext ac = ServletActionContext.getContext();
        // 在contextmap存储数据,默认的相当于request,因为ActionContext的生命周期和request一样都是第一次请求
        ac.put("username", "张三");
        return super.execute();
    }
}

 在contextMap中取数据要使用“#”

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>%
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <s:property value="#username"/>
    <s:debug></s:debug>
  </body>
</html>

  •  在会话范围存储数据

 

package action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

public class PersonAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        System.out.println(username);
        // 获得动作类的上下文
        /**
         * ActionContext包含了contextmap和valuestack
         */
        ActionContext ac = ServletActionContext.getContext();
        // 在contextmap存储数据,默认的相当于request,因为ActionContext的生命周期和request一样都是第一次请求;
         // 把数据存储在会话范围
        ac.getSession().put("user", "周大大");
        return super.execute();
    }
}

 取值时语法:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>%
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <s:property value="#session.user"/>
    <s:debug></s:debug>
  </body>
</html>
  •  在应用级别来存储数据
  • package action;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import org.apache.struts2.ServletActionContext;
    
    public class PersonAction extends ActionSupport {
        @Override
        public String execute() throws Exception {
            System.out.println(username);
            // 获得动作类的上下文
            /**
             * ActionContext包含了contextmap和valuestack
             */
            ActionContext ac = ServletActionContext.getContext();
            // 在应用范围内存数据
            ac.getApplication().put("pv", 23313513);
            return super.execute();
        }
    }

    取数据:

  • <s:property value="#application.pv"/>
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值