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