ServletContext做用功能详解

1、ServletContext简介html

当Servlet容器在启动一个web应用时,会为它建立惟一的ServletContext对象。当Servlet容器终止一个web应用,则就会销毁它的ServletContext对象。java

ServletContext,是一个全局的存储信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户能够多个,session,一个用户一个,而servletContext,全部用户公用一个。因此为了节省空间,提升效率ServletContext中要放必须的、重要的、全部用户须要共享的线程又是安全的一些信息。web

换种方式说,运行在Java虚拟机中每个web应用程序都有一个与之相关的Servlet上下文。ServletContext对象时Web服务器中的一个已知根路径,Servlet上下文被定位于http://localhost:8080/项目名。/项目名 称为上下文路径,一个ServletContext对象表示了一个Web应用程序的上下文。数据库

Servlet上下文:Servlet上下文提供对应用程序中全部Servlet所共有的各类资源和功能的访问,Servlet上下文API用于设置应用程序中全部Servlet共有的信息,Servlet可能须要共享他们之间的共有信息,运行于同一服务器的Servlet有时也会共享资源,如jsp页面、文件和其余Servlet、安全

举例说明:服务器

如,作一个购物类网站,要从数据库中提取物品信息,若是用session保存这些物品信息,每一个用户都访问一遍数据库,效率就过低了;因此要用servlet上下文来保存,在服务器开始时,就访问数据库,将物品信息存入servlet上下文中,这样,每一个用户只用从上下文中读入物品信息就好了。session

另外在jsp文件中,application是ServletContext的实例,由jsp容器默认建立,在servlet中调用getServletContext()获得ServletContext的实例。每一个应用都会有一个ServletContext对象与之关联,当容器分布在多个虚拟机上时,web应用在所分布的每一个虚拟机上都拥有一个ServletContext实例。app

2、ServletContext接口简介jsp

ServletContext接口定义了运行servlet的web应用的servlet视图。容器供应商负责提供servlet容器内ServletContext接口的实现。设置ServletContext对象,servlet能够记录事件日志,获取资源的URL地址,而且设置和保存上下文内能够访问的其余Servlet的属性。分布式

获取ServletContext实例:

一、经过ServletConfig接口的getServletContext()方法得到。

二、经过GenericServlet抽象类的getServletContext()方法得到,不过看源码发现这个方法其实也是调用了ServletConfig的getServletContext()方法。

三、HttpServlet类继承了GenericServlet抽象类,因此也能够经过getServletContext()获取。

3、ServletContext用途:

一、访问web应用的初始化参数和属性:

getInitParameter

getInitParameterNames

应用开发人员利用初始化参数传递配置信息,典型的例子是web管理员的e-mail地址或一个持有关键数据的系统名称。

在web.xml文件中配置初始化参数:

<context-param>
  <param-name>email</param-name>
  <param-value>xxxxxx</param-value>
 </context-param>

在servlet中访问初始化参数:

String email=this.getServletContext().getInitParameter("email");
  System.out.println(email);

二、上下文属性:

servlet能够经过名称将对象属性绑定到上下文,任何绑定到上下文属性均可以被同一个web应用的其余    servlet使用。

setAttribute

getAttribute

getAttributeNames

romoveAttribute

当信息须要在运行于分布式环境中的servlet之间共享时,信息被放入会话中,存储于数据库中,或者存储于EJB组件中。

三、访问web应用的静态资源

使用servletContext接口能够直接访问web应用中的静态内容文档接口,包括html,gif和jpeg文件。

getResource

getResourceAsStream

这两个方法的参数都是以"/"开头的字符串,表示资源相对于context根的相对路径。文档结构能够存在于服务器文件系统,或是在远程服务器上,或其余位置。可是不能够用来得到动态资源,好比getResource("/index.jsp"),这个方法将返回该jsp文件的源码,而不是动态页面。

web应用资源的完整列表可使用getResourcePaths(String path)方法返回。

另外,每一个servlet上下文都须要一个临时的存储目录,servlet容器必须为每一个servlet上下文提供一个私有的临时目录,而且使它能够经过javax.servlet.context.tempdir上下文属性可用。

相关文章
相关标签/搜索