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檔案)
getServerInfo()方法概述:public java.lang.String getServerInfo() 返回servlet容器的名稱和版本號碼。 返回的字串格式是servername/versionnumber(伺服器名/版本號碼),例如:the JavaServer Web Development Kit 將返回字串”JavaServer Web Dev Kit/1.0”。 servlet容器還將返回其它可選資訊,如:“JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)”
getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name) 返回上下文定義的變數的值,如果變數不存在,返回null。 見ServletConfig.getInitParameter(java.lang.String)。
getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames() 返回上下文定義的所以變數的枚舉函數,如果空則返回空枚舉函數。
getAttribute()方法概述:public java.lang.Object getAttribute(java.lang.String name) 返回指定名字的servlet容器變數值,如果無該變數則返回null。
getAttributeNames()方法概述:public java.util.Enumeration getAttributeNames() 返回servlet容器的所有變數的枚舉函數,如果空則返回空枚舉函數。
setAttribute()方法概述:public void setAttribute(java.lang.String name,java.lang.Object object) 在servlet容器內綁定一個指定對象給一個指定的名字。如果該名字已經綁定到一個對象,則用該對象覆蓋之。 If listeners are configured on the ServletContext the container notifies them accordingly. (不會翻譯,求助) 如果傳遞一個null值,則相當於調用removeAttribute()。
removeAttribute()方法概述:public void removeAttribute(java.lang.String name) 移除指定名字的servlet容器變數。
getServletContextName()方法概述:public java.lang.String getServletContextName() 返回web application的名字。
最後,見Servlet.getServletConfig(), ServletConfig.getServletContext()