当前位置: 代码迷 >> Java Web开发 >> ServletContext 的功能与用处是什么?该如何解决
  详细解决方案

ServletContext 的功能与用处是什么?该如何解决

热度:561   发布时间:2016-04-17 14:24:32.0
ServletContext 的功能与用处是什么?
ServletContext   的功能与用处是什么?

------解决方案--------------------
ServletContext接口简述

ServletContext接口的简述:public interface ServletContext
定义了一系列方法用于与相应的servlet容器通信,比如:获得文件的MIME类型,分派请求,或者是向日志文件写日志等。
每一个web-app只能有一个ServletContext,web-app可以是一个放置有web application 文件的文件夹,也可以是一个.war的文件。
ServletContext对象包含在ServletConfig对象之中,ServletConfig对象在servlet初始化时提供servlet对象。

getContext()方法概述:public ServletContext getContext(java.lang.String uripath)
返回一个指定URL地址的ServletContext对象。
该方法允许servlets获得对服务器的各部分上下文的访问权,并根据需要从上下文获得RequestDispatcher对象。这个指定的URL路径必须带有 "/ ",被解释为服务器文档根目录下的相对路径,并跟其它web-app主机的上下文根目录匹配。
在一个安全的环境下,servlet容器会返回null。

getMajorVersion()方法概述:public int getMajorVersion()
返回servlet容器支持的Servlet API的版本号,所有实现都必须返回整型数2。

getMinorVersion()方法略。

getMimeType()方法概述:public java.lang.String getMimeType(java.lang.String file)
返回指定文件的文件类型,如果文件类型未知,则返回null。文件类型由servlet容器的配置决定并在一个web-app中被指定。一般情况下的文件类型是: "text/html " 和 "image/gif "。

getResourcePaths()方法概述:public java.util.Set getResourcePaths(java.lang.String path)
返回一个存储web-app中所有资源路径的Set(集合)。
路径以”/ "结尾表示一个子目录,并以 "/ "开头表示一个对于web-app的相对路径。

例子:
/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( "/ ") 将返回Set { "/welcome.html ", "/catalog/ ", "/customer/ ", "/WEB-INF/ "};
getResourcePaths( "/catalog/ ") 将返回Set { "/catalog/index.html ", "/catalog/products.html ", "/catalog/offers/ "}。

如果子目录为空,返回null。


getResource()方法概述:public java.net.URL getResource(java.lang.String path) throws java.net.MalformedURLException
返回由path指定的资源路径对应的一个URL对象,该path必须以“/ "开头并作为当前目录的相对位置。
该方法允许servlet容器使serlets中的一个资源变为可用。该资源允许是一个本地资源或者是一个远程文件系统,这些资源可以在数据库中,或者在一个.war文件中。
servlet容器必须实现URL句柄和URLCOnnection对象,这些对象对于资源访问是必需的。
如果没有匹配的资源,该方法返回null。
某些容器甚至可以向该方法所返回的资源写数据。
这个资源可以直接返回,所以请求一个a.jsp文件将返回JSP源文件。用一个RequestDispatcher对象取而代之,可以包含执行的结果。
这个方法功能有别于java.lang.Class.getResource,一个基于class loader检索资源的方法。但前者不依赖于class loaders。

getResourceAsStream()方法概述:public java.io.InputStream getResourceAsStream(java.lang.String path)
返回一个由String path指定位置资源的InputStream。返回的InputStream可以是任意类型和长度的。

getRequestDispatcher()方法概述:public RequestDispatcher getRequestDispatcher(java.lang.String path)
返回一个RequestDispatcher对象,该对象扮演着一个给定资源包装者的角色。一个RequestDispatcher对象可以用于传送一个请求到特定资源或者把特定资源包含到一个响应当中。该特定资源可以是动态的也可以是静态的。
通过getContext()方法可以为外部contexts资源获取RequestDispatcher对象。如果ServletContext不能获取RequestDispatcher对象,返回null。

getNamedDispatcher()方法概述:public RequestDispatcher getNamedDispatcher(java.lang.String name)
为指定名字的servlet对象返回一个RequestDispatcher对象。Servlet和JSP页面可以通过服务器管理或web application deployment descriptor被命名。一个Servlet实例的名称可以由ServletConfig.getServletName()决定。

getServlet()方法、getServlets()方法、getServletNames()方法,不推荐使用。

log(java.lang.String msg)方法概述:public void log(java.lang.String msg)
把指定的信息写进servlet日志文件,通常是事物日志。日志文件的名称和类型与servlet容器有关。

public void log(java.lang.Exception exception,java.lang.String msg) 略
public void log(java.lang.String message,java.lang.Throwable throwable) 略

getRealPath()方法概述:public java.lang.String getRealPath(java.lang.String path)
返回一个指定虚拟路径的真实路径(完整路径)的字符串。
举例:虚拟路径 "/index.html "将返回服务器文件系统中的绝对路径 "http://host/contextPath/index.html ", 当中的contextPath是ServletContext的上下文路径。
返回的路径将适用于servlet容器所运行的操作系统。假如无法把虚拟路径映射为真实路径,该方法将返回null。(比如当路径指定的内容是源于.war文件)
  相关解决方案