Context(上下文)在Java编程中是一个非常重要的概念,而且出现频率很高;但是又是一个比较难理解的东西,或许“上下文”这种翻译也不太恰当,我觉得如果找不到一个合适的中文意思,倒不如不翻译。
下面列举几个涉及Context的例子。
第一、ServletContext是Servlet中最大的一个接口,呈现了web应用的Servlet视图。它代表当前的web应用,所有的Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。这里的Context可以理解成是一种容器,而且容器里的东西是共享的。
第二、pageContext是JSP中的内置对象之一,它是javax.servlet.jsp.PageContext类的实例对象。提供了对JSP页面所有的对象及命名空间的访问,这里Context看作是一个实现访问JSP页面之间的数据共享的容器。
第三、在著名框架Spring中,Context(上下文)的概念更是得到了广泛的应用。BeanFactory 接口的子接口ApplicationContext 就表示一个功能更加丰富的工厂,它既涵盖了BeanFactory 具备的所有功能,也增加了国际化、资源访问(如URL和文件)、事件传播等方面的支持。
第四、Context在android中的应用,可以说Context的概念贯穿了整个android体系;在Service、BroadcastReceiver、Activity等都会用到Context的相关方法。位于framework package的android.content.Context中。它是一个抽象类,而且提供了该抽象类的具体实现类ContextIml类。只有通过Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的 实例为Activity,Context提供了关于应用环境全局信息的接口。这里的Context可以理解为调用所在的环境。
总之,Context可以理解为提供信息或功能的容器或者环境。个人观点,感觉说得有点浅显、片面。希望大家补充指正。