首页 > 技术文章 > (十)ServletContext

DivineHost 2016-01-19 10:20 原文

下面是对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);

}

推荐阅读