ActionContext
1. 什么是ActionContext?
ActionContext是map结构的容器,ActionContext是Action的上下文,存放Action执行过程中的数据信息。ActionContext存放Action的数据,ActionInvocation,request,session,appplication的数据等。每次请求时会为当前线程创建一个新的ActionContext。而ActionContext采用了ThreadLocal的方式来存放ActionContext,所以ActionContext是线程安全的。
2. 获取ActionContext
ActionContext.getContext()获取。由于ActionContext是线程安全的,并且是通过静态方法获取的,所以在本线程中的非Action类中,也可以直接访问。
注意:ActionContext是基于请求创建的,所以在非请求的线程中是不能使用ActionContext对象的。如:fiter的init()方法。
3. ThreadLocal
publicclass Test { publicstaticvoid main(String[] args) { //ThreadLocal存放线程局部变量的容器 //存放在ThreadLocal中的变量是线程安全的 final ThreadLocal<String> threadlocal=new ThreadLocal<String>(); Thread thread=new Thread(new Runnable() { publicvoid run() { //输出为null表示线程安全 System.out.println("thread:"+threadlocal.get()); } }); thread.start(); threadlocal.set("zys"); System.out.println(threadlocal.get()); } } |
4. ActionContext中包含6大对象
(1)application
(2) session
(3) request
(4) parameters
(5) attr(parametersàrequestàsessionàapplication,按照顺序在当前界面取对象
的值,都取不到则返回null)
(6) ValueStack(值栈)