<初学,整理思路>
其实就是一套方法集合,这样servlet可以和servlet 容器进行通信,如:获得文件类型 分发请求,或者写入log
每一个虚拟机的每一个application都有一个context与之对应(一个web应用是一系列servlet和content页面(可能通过服务器URL命名空间(如/catalog
)导入也有可能是通过.war导入的)的集合,也就是说context是这一系列servlet和content的通信基础,有人把context看做一个池子,也是有道理的。
对于一个部署了的web应用来说,每个虚拟机都有一个context实例与之对应,这种情况下,context并不能看做是完全意义上的一个全局变量,也就是不能被用做本地的一个全局变量来共享全局信息,全局变量可以用外部的资源(如数据库)来代替。
一个 ServletContext对象包含在一个
ServletConfig
对象里面,可以通过ServletConfig
对象用getServletContext()方法获得这个servletcontext。
servletContext的field和方法(可以通过对field和方法的了解来看看context到底能得到application的什么信息,能干些什么):
field:
static string ORDERED_LIBS:
WEB-INF/lib下面的jar文件名称(类型是一个list<String>),这个string内部的排序方式是web Fragments名称(可能会排除个别情况),如果没有任何相对或绝对的排序,那么就为空。
static string TEMPDIR:由servletContainer提供给ServletContext的临时目录(类型是java.io.file)。
method:
创建一些新东西,这个一看方法名就知道是干了些什么,当然每个方法因为输入参数的不同,有多重重载方式,但是目的是一样的了
addListener(...)
addFilter(...)
addServlet(...)
createListener(...)
createFilter(...)
createServlet(...)
下面主要是对已有属性的的操作,log也加在里面算了
removeAttribute(String name)
setAttribute(String name, Object object)
setInitParameter(String name, String value)
setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes)
log(String message, Throwable throwable)
读取上下文相当全的信息了,几乎是整个application方方面面的信息了,这个context翻译成上下文还是比较有道理的了
getAttribute(String name)
getContext(String uripath)
getDefaultSessionTrackingModes()
getEffectiveSessionTrackingModes()
getFilterRegistration(String filterName)
getInitParameter(String name)
getMimeType(String file)
getNamedDispatcher(String name)
getRealPath(String path)
getRequestDispatcher(String path)
getResource(String path)
getResourceAsStream(String path)
getResourcePaths(String path)
getServletRegistration(String servletName)