ServletContext,PageContext.EJBContext, 还有Spring里面的ApplicationContext等等"
笔者总结了一些对Context的介绍,结合自己的理解,希望可以方便大家更好利用Context

为了向SERVLET提供一个HTTP请求,又提供在运行时刻的请求的信息,容器将HTTP请求封装成JAVA对象,该对象也称为REQUEST,该对象也在其他对象中提供了类似剪贴版似的组件,不同的SERVLET通过它来交换信息,该组件被称为上下文。

应用程序上下文中的对象对于应用程序的全部SERVLET来说都可以使用。

会话上下文其中的对象对于访问了用户的HTTPSESSION对象的SERVLET都可以使用,该HTTPSESSION通常通过调用HTTPREQUEST的方法,会话上下文会通过容器/SERVELT而失效。

HTTP请求上下文,其中的对象对于处理该请求的全部SERVLET都可以使用,该HTTP请求可能从一个SERVLET转发另一个SERVLET,当一个SERVLET包含另一个SERVLET的时候,在HTTP请求上下文中请求也能共享页面上下文,对于当前的JSP而言,在该请求的生命周期中,该上下文可用,页面范围仅仅对JSP有效,对SERVLET无效。

SERVELET上下文的另一种解释,JAVA的SERVLET可以在一系列被称为上下文的共享对象的存放对象,上下文中的名字都由一个相关联的对象组成,同一个应用程序中任何程序都可以从一个上下文中通过名字获得相关联的对象,一个应用程序中的SERVLET还经常需要在一个HTTP请求外来共享某些信息,因此为了管理这些对象的共享周期,容器提供了3个标准的上下文:应用程序上下文,HTTP请求上下文,会话上下文。一个页面范围内的上下文仅仅对一个页面有效。在页面范围内的对象不可能和其他JSP和SERVLET共享。

简单来说,Context就是一个存储器,把相关的东西存起来,可存可取.

==============================================

ActionContext 是action执行时的上下文,上下文可以看作是一个容器(这里其实是Map),存放的是action在执行时需要用到的对象,每一个action会是实例化一个ActionContext对象,ActionContext里的属性只会对应当前请求中线程中可见,从而保证线程是安全的。OGNL上下文是从值栈中取数据,而struts2中经应用程序范围里的数据以及Action处理的数据存储在一个区域里称为值栈。  

struts2中访问非根对象属性时用#操作符:#session.msg  struts2中默认值栈视为跟对象,实际上#相当与:ActionContext.getContext().getSession().getAttribute("msg") 。