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: 值栈

  

  

  

  

 

posted on 2017-04-14 16:48  forever_2h  阅读(162)  评论(0编辑  收藏  举报

导航