关于传说中的上下文Context
很多朋友都对Context不太了解,他们说"项目中没看到这个对象啊""但是老是听人提起Context","经常看到ServletContext,PageContext.EJBContext, 还有spring里面的ApplicationContext等等"
笔者总结了一些对Context的介绍,结合自己的理解,希望可以方便大家更好利用Context
为了向servlet提供一个HTTP请求,又提供在运行时刻的请求的信息,容器将HTTP请求封装成Java对象,该对象也称为request,该对象也在其他对象中提供了类似剪贴版似的组件,不同的servlet通过它来交换信息,该组件被称为上下文。
上下文的作用也就是request的一组件,用来为不同的servlet交换信息,有点类似间谍一样-=-可是间谍也分好多类别,主要看他们暴漏的时间长短,所以有以下分类:
1 应用程序上下文是其中的对象对于应用程序的全部SERVLET使用。
2 会话上下文其中的对象对于访问了用户的HTTPSESSION对象的SERVLET都可以使用,该HTTPSESSION通常通过调用HTTPREQUEST的方法,会话上下文会通过容器/SERVELT而失效。
3 HTTP请求上下文,其中的对象对于处理该请求的全部SERVLET都可以使用,该HTTP请求可能从一个SERVLET转发另一个SERVLET,当一个SERVLET包含另一个SERVLET的时候,在HTTP请求上下文中请求也能共享页面上下文,对于当前的JSP而言,在该请求的生命周期中,该上下文可用,页面范围仅仅对JSP有效,对SERVLET无效。
4 SERVELET上下文的另一种解释,JAVA的SERVLET可以在一系列被称为上下文的共享对象的存放对象,上下文中的名字都由一个相关联的对象组成,同一个应用程序中任何程序都可以从一个上下文中通过名字获得相关联的对象,一个应用程序中的SERVLET还经常需要在一个HTTP请求外来共享某些信息。
因此为了管理这些对象的共享周期,容器提供了3个标准的上下文:应用程序上下文,HTTP请求上下文,会话上下文。一个页面范围内的上下文仅仅对一个页面有效。在页面范围内的对象不可能和其他JSP和SERVLET共享。
简单来说,Context就是一个存储器,把相关的东西存起来,可存可取.