ActionContext-study

 

  ActionContext contex=ActionContext.getContext();

  Actioncontext是上下文是一个容器,存放着Action这执行时要用到的一些对象,

  如params,session,servletContext,本地化(Locale)信息等。

  在每次执行时都会创建新的ActionContext,是线程安全的,也就是说在同一个线程里

  ActionConctext是唯一的,这样我的Action就可以在多线程中使用

  

  public static ActionContext getContext() {

  ActionContext context = (ActionContext) actionContext.get();

 

  if (context == null) {

  OgnlValueStack vs = new OgnlValueStack();

  context = new ActionContext(vs.getContext());

  setContext(context);

  }

 

  return context;

  }

一般情况,我们的ActionContext都是通过:ActionContext context = (ActionContext) actionContext.get();来获取的。我们再来看看这里的actionContext对象的创建:static ThreadLocal actionContext = new ActionContextThreadLocal();,ActionContextThreadLocal是实现ThreadLocal的一个内部类。ThreadLocal可以命名为“线程局部变量”,它为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。这样,我们ActionContext里的属性只会在对应的当前请求线程中可见,从而保证它是线程安全的。

 

posted on 2016-05-19 09:44  微笑流氓兔  阅读(86)  评论(0编辑  收藏  举报