zoukankan      html  css  js  c++  java
  • struts2 之 ThreadLocal 和 ActionContext

    1. ThreadLocal:该类提供了线程局部(thtead-local)变量。threadLocal是一个容器,该容器中存放的数据可以保证线程安全。

    案例如:

    public class ThreadLocalDemo {
        public static void main(String[] args) {
            final ThreadLocal<Integer> tl = new ThreadLocal<Integer>();
            //向ThreadLocal中存放数据
            tl.set(20);
            new Thread(){
                public void run() {
                    tl.set(100);
                    //获取数据
                    System.out.println(Thread.currentThread().getName()+tl.get());
                }
            }.start();
            //获取ThreadLocal中的数据
            System.out.println(Thread.currentThread().getName()+tl.get());
        }
    }

    2. 在struts2中,相比于servlet做很多处理,比如说:获取数据,数据封装,数据转换等。这些功能都是通过struts的拦截器实现的,并且在这个过程中都是对数据进行处理的。在struts2中,数据的迁移(从 request 中到struts中--actionContext)工作是通过ActionContext来完成的。struts2中所有处理数据的工作都是从action context获取的。

    3.  ActionContext就是一个容器。是struts2中的上下文对象,ActionContext是map结构对象。是线程安全的对象,在struts2中,ActionContext是贯穿action整个执行流程。每次请求都会新创建ActionContext并且将servletApi中的数据装如actionContext,在执行完成后将数据重新装如servletApi。所以struts2的执行效率相比servlet更低。但是,线程安全。

    4.ActionContext中的6大对象:

      (1) request : 存放请求域中的数据。

      (2) session : 存放回话域中的数据。

      (3) application: 存放全局域中的数据。

      (4) parameter : 存放请求数据。

      (5) attr : 存放以上4个域中的数据。

      (6) ValueStack: 值栈

      

      

      

      

  • 相关阅读:
    【LeetCode】152. 乘积最大子数组(DP)
    【剑指Offer】49. 丑数(三指针)
    [P1979][NOIP2013] 华容道 (BFS建图+SPFA)
    [P1850][NOIP2016] 换教室 (期望+DP+Floyd)
    差分约束学习笔记
    [P1291][SHOI2002] 百事世界杯之旅 (期望)
    [P4342][IOI1998] Polygon (区间DP)
    [P3802] 小魔女帕琪 (期望)
    [P1273] 有线电视网 (树形DP+分组背包)
    树链剖分学习
  • 原文地址:https://www.cnblogs.com/forever2h/p/6709645.html
Copyright © 2011-2022 走看看