(十)ServletContext
下面是对ServletContext的简单介绍。
/** * <p>标题: ServletContext</p> * <p> * 功能描述: * 1、一个ServletContext对象表示一个web应用程序的上下文,servlet容器在servlet初始化期间,向期传递ServletConfig对象, * 可以通过ServletConfig对象的getServeltContext()方法得到 ServletContext对象,也可以通过GenericServlet类的 * getServletContext()方法得到ServletContext对象,不过GenericServlet类的getServletContext()也是调用ServletConfig * 对象的getServletContext()方法来得到这个对象的。 * 2、ServletContext对象可以被Web应用程序中所有的Servlet所访问,利用ServletContext对象可以在多个客户端之间、 * 多个Servlet之间(要求在同一个Web应用程序下)共享属性。 * * </p> * <p>创建日期: 2016年1月19日 上午9:30:46</p> * <p>作者: 年华</p> * <p>版本: 1.0</p> */ public abstract interface ServletContext { //下面四个方法用于读取、移除和设置共享属性 public abstract Object getAttribute(String paramString); public abstract Enumeration<String> getAttributeNames(); public abstract void removeAttribute(String paramString); public abstract void setAttribute(String paramString, Object paramObject); //用于返回Web应用程序的上下文路径。上下文路径总是以斜杠(/)开头,但结束没有斜杠(/)。在默认(根)上下文中,这个方法返回空字符串""。 public abstract String getContextPath(); //下面两个方法用于返回Servlet容器支持的Java Servlet API的主版本和次版本号。例如,对于遵从Servlet 2.4版本的容器,getMajorVersion()方法返回2,getMinorVersion()方法返回4。 public abstract int getMajorVersion(); public abstract int getMinorVersion(); //该方法返回指定文件的MIME类型,如果类型是未知的,这个方法将返回null。MIME类型的检测是根据Servlet容器的配置,也可以在Web应用程序的部署描述符中指定。 public abstract String getMimeType(String paramString); /* *该方法返回资源的路径列表,参数path必须以斜杠(/)开始,指定用于匹配资源的部分路径。例如,一个Web应用程序包含了下列资源: * /welcome.html * /catalog/index.html * /catalog/products.html * /catalog/offers/books.html * /catalog/offers/music.html * /customer/login.jsp * /WEB-INF/web.xml * /WEB-INF/classes/com.acme.OrderServlet.class * * 如果调用getResourcePaths("/"),将返回[/welcome.html, /catalog/, /customer/, /WEB-INF/]。 * 如果调用getResourcePaths("/catalog/"),将返回[/catalog/index.html, /catalog/products.html, /catalog/offers/]。 * */ public abstract Set<String> getResourcePaths(String paramString); //该方法返回被映射到指定路径上的资源的URL。传入的参数path必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。这个方法允许Servlet容器从任何来源为Servlet生成一个可用的资源。资源可以是在本地或远程文件系统上,在数据库中,或者在WAR文件中。如果没有资源映射到指定的路径上,该方法将返回null。 public abstract URL getResource(String paramString) throws MalformedURLException; //该方法与getResource()方法类似,不同之处在于,该方法返回资源的输入流对象。另外,使用getResourceAsStream()方法,元信息(如内容长度和内容类型)将丢失,而使用getResource()方法,元信息是可用的。 public abstract InputStream getResourceAsStream(String paramString); //该方法返回一个RequestDispatcher对象,作为指定路径上的资源的封装。可以使用RequestDispatcher对象将一个请求转发(forward)给其他资源进行处理,或者在响应中包含(include)资源。要注意的是,传入的参数path必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。 public abstract RequestDispatcher getRequestDispatcher(String paramString); //该方法与getRequestDispatcher()方法类似。不同之处在于,该方法接受一个在部署描述符中以<servlet-name>元素给出的Servlet(或JSP页面)的名字作为参数。 public abstract RequestDispatcher getNamedDispatcher(String paramString); //记录日志的方法,用于记录指定异常的栈跟踪信息。 public abstract void log(String paramString, Throwable paramThrowable); //在一个Web应用程序中,资源用相对于上下文路径的路径来引用,这个方法可以返回资源在服务器文件系统上的真实路径(文件的绝对路径)。返回的真实路径的格式应该适合于运行这个Servlet容器的计算机和操作系统(包括正确的路径分隔符)。如果Servlet容器不能够将虚拟路径转换为真实的路径,这个方法将会返回null。 public abstract String getRealPath(String paramString); //该方法返回运行Servlet的容器的名称和版本。 public abstract String getServerInfo(); //可以为Servlet上下文定义初始化参数,这些参数被整个Web应用程序所使用。可以在部署描述符(web.xml)中使用<context-param>元素来定义上下文的初始化参数,下面两个方法用于访问这些参数。 public abstract String getInitParameter(String paramString); }