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

      

      

      

      

  • 相关阅读:
    shell脚本中判断上一个命令是否执行成功
    nginx 414 Request-URI Too Large
    nginx 重写URL尾部斜杠
    Linux shell 日期,时间相关的命令
    shell脚本中自定义日志记录到文件
    scanf后面跟一个getchar
    1.Tarball软件make与makefile详解(还需要补充)
    <>和“”的区别
    malloc,calloc,realloc,alloc
    toString()方法细节
  • 原文地址:https://www.cnblogs.com/forever2h/p/6709645.html
Copyright © 2020-2023  润新知