相信只要是一个开发者,在阅读博客以及官方文档时都会见到不少的上下文【中文:上下文,英文:Context】,比如下面这样的:
多也就算了,关键它十分晦涩难懂,对于初学者更是十分奔溃,今天我们就来盘它!
一、百度百科![](https://i-blog.csdnimg.cn/blog_migrate/0b75f8959aba6e319447ae3cb634389a.png)
是的,百度百科还是一如既往的扯淡!!!
二、深入刨析
其实首先上下文这个东西不是一个具体的东西,上下文在不同的地方表示不同的含义,要感性理解。
再比如:
其实,我理解的上下问其实就是作用域这个东西, 可以理解成是一种容器,而且容器里的东西是共享的。
比如:
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和文件)、事件传播等方面的支持。
再入本文刚开始附图中多线程中的上下文,其实就是一个线程切换到另一个线程时候要保存的当前线程的本地数据,程序指针,堆栈信息【上文】,并且还有下一个线程的本地数据,程序指针等等来执行【下文】。
结合现实,
(1)我们向别人讲述一件事情时,一般是先给出故事的前提(如社会背景,当时的人物状态),这些“前提”就是上文,而从这些前提出发,再讲述故事的详细情况,这就是下文。
(2)编程时,我们一般也是先给程序定义一些前提(环境变量、描述环境变化的全局变量等),这些“前提”就是上文,然后再编写各功能模块的代码,这是下文。
总之,Context可以理解为提供信息或功能的容器或者环境。个人观点,希望大家补充指正。
https://blog.csdn.net/dufufd/article/details/79512803
https://segmentfault.com/q/1010000004180908