javax.servlet
インタフェース ServletContext


public interface ServletContext

サーブレットがサーブレットコンテナと通信する際に使用するメソッド一式を定義します。たとえば MIME タイプのファイルの取得、要求の振り分け、ログファイルへの書き込みといったメソッドです。

Java 仮想マシン単位で見た場合、「Web アプリケーション」 1 つに、1 つのコンテキストが対応します。(「Web アプリケーション」とは、/catalog などの、サーバの URL 名前空間の特定のサブセットに置かれた、サーブレットとコンテンツの集まりです。Web アプリケーションは .war ファイルによってインストールすることも可能です)

配備記述子に "distributed" とマークされた Web アプリケーションの場合、各仮想マシンに対してそれぞれ 1 つのコンテキストインスタンスがあります。このような場合は、グローバル情報を共有する場所としてコンテキストを使用することはできません。その情報が真の意味でグローバルにはならないからです。代わりに、データベースのような外部リソースを使用して下さい。

ServletContext オブジェクトは、サーブレットの初期化時に Web サーバがサーブレットに提供する ServletConfig オブジェクト内に含まれています。

関連項目:
Servlet.getServletConfig(), ServletConfig.getServletContext()

メソッドの概要
 java.lang.Object getAttribute(java.lang.String name)
          指定された名前に対応するサーブレットコンテナの属性を返します。
 java.util.Enumeration getAttributeNames()
          このサーブレットのコンテキスト内で利用可能な属性名が格納された Enumeration を返します。
 ServletContext getContext(java.lang.String uripath)
          サーバ上で指定された URL に対応する ServletContext オブジェクトを返します。
 java.lang.String getInitParameter(java.lang.String name)
          指定された初期化パラメータについて、その値が格納された String を返します。
 java.util.Enumeration getInitParameterNames()
          コンテキストの初期化パラメータの名前を、String オブジェクトの Enumeration として返します。
 int getMajorVersion()
          このサーブレットコンテナがサポートする Java Servlet API のメジャーバージョン番号を返します。
 java.lang.String getMimeType(java.lang.String file)
          引数で指定されたファイルの MIME タイプを返します。
 int getMinorVersion()
          このサーブレットコンテナがサポートする Servlet API のマイナーバージョン番号を返します。
 RequestDispatcher getNamedDispatcher(java.lang.String name)
          指定されたサーブレットのラッパーとして機能する RequestDispatcher オブジェクトを返します。
 java.lang.String getRealPath(java.lang.String path)
          指定された仮想パスに対応する実際のパスを格納した String を返します。
 RequestDispatcher getRequestDispatcher(java.lang.String path)
          指定されたパスにあるリソースのラッパーとして機能する RequestDispatcher オブジェクトを返します。
 java.net.URL getResource(java.lang.String path)
          指定されたパスにマップされたリソースへの URL を返します。
 java.io.InputStream getResourceAsStream(java.lang.String path)
          指定されたパスにあるリソースを InputStream オブジェクトとして返します。
 java.util.Set getResourcePaths(java.lang.String path)
          引数で指定されたパスに一致するものが Web アプリケーション内にあると、そのサブパス以下にあるすべてのリソースのパス名をディレクトリに似た形式のリストにして返します。
 java.lang.String getServerInfo()
          サーブレットが実行されているサーブレットコンテナの名前とバージョンを返します。
 Servlet getServlet(java.lang.String name)
          推奨されていません。 Java Servlet API 2.1 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、ServletContext からサーブレットを取得するために定義されました。このバージョンでは、このメソッドは常に null を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。

このメソッドの代わりに、サーブレットは ServletContext クラスを使用して情報を共有することができます。また、一般の非サーブレットクラスでメソッドを呼び出して、共有ビジネスロジックを実行することができます。

 java.lang.String getServletContextName()
          この ServletContext に対応するこの Web アプリケーションの名前を返します。
 java.util.Enumeration getServletNames()
          推奨されていません。 Java Servlet API 2.1 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、このコンテキストにとって既知の、すべてのサーブレット名の Enumeration を返すために定義されました。このバージョンでは、このメソッドは常に空の Enumeration を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。

 java.util.Enumeration getServlets()
          推奨されていません。 Java Servlet API 2.0 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、このサーブレットコンテキストにとって既知の、すべてのサーブレットの Enumeration を返すために定義されました。このバージョンでは、このメソッドは常に空の Enumeration を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。

 void log(java.lang.Exception exception, java.lang.String msg)
          推奨されていません。 Java Servlet API 2.1 以降では、代わりに log(String message, Throwable throwable) を使用します。

このメッセージは当初、例外のスタックトレースと説明用のエラーメッセージを、サーブレットのログファイルへ書き出すために定義されました。

 void log(java.lang.String msg)
          指定されたメッセージを、サーブレットのログファイル、通常はイベントログに書き出します。
 void log(java.lang.String message, java.lang.Throwable throwable)
          該当の Throwable 例外を説明するメッセージとスタックトレースを、サーブレットのログファイルに書き出します。
 void removeAttribute(java.lang.String name)
          指定された名前の属性をサーブレットコンテキストから削除します。
 void setAttribute(java.lang.String name, java.lang.Object object)
          オブジェクトを、このサーブレットのコンテキスト内にある属性名にバインドします。
 

メソッドの詳細

getContext

public ServletContext getContext(java.lang.String uripath)
サーバ上で指定された URL に対応する ServletContext オブジェクトを返します。

このメソッドによって、サーブレットはコンテキストを通じサーバのさまざまな資源にアクセスできるようになります。また、必要に応じてコンテキストから RequestDispatcher オブジェクトを取得することもできます。指定されたパスは "/" で始まる必要があり、サーバのドキュメントルートに対する相対パスと解釈され、このコンテナをホストとするほかの Web アプリケーションのコンテキストのルートに照合されます。

セキュリティを意識した環境では、指定された URL に対して、サーブレットコンテナが null を返す場合があります。

パラメータ:
uripath - コンテナ内の別の Web アプリケーションのコンテキストのパスを指定する String
戻り値:
指定された URL に対応する ServletContext オブジェクト。または、何も存在しない場合か、コンテナがこのアクセスを制限したい場合は null
関連項目:
RequestDispatcher

getMajorVersion

public int getMajorVersion()
このサーブレットコンテナがサポートする Java Servlet API のメジャーバージョン番号を返します。バージョン 2.3 に準拠するすべての実装では、このメソッドが整数の 2 を返さなければなりません。
戻り値:
2

getMinorVersion

public int getMinorVersion()
このサーブレットコンテナがサポートする Servlet API のマイナーバージョン番号を返します。バージョン 2.3 に準拠するすべての実装では、このメソッドが整数の 3 を返さなければなりません。
戻り値:
3

getMimeType

public java.lang.String getMimeType(java.lang.String file)
引数で指定されたファイルの MIME タイプを返します。または、MIME タイプが不明の場合は、null を返します。MIME タイプはサーブレットコンテナの設定に基づき判断されますが、Web アプリケーションの配備記述子内で指定することもできます。良く使われる MIME タイプには、"text/html""image/gif" があります。
パラメータ:
file - ファイルの名前を指定する String
戻り値:
ファイルの MIME タイプを指定する String

getResourcePaths

public java.util.Set getResourcePaths(java.lang.String path)
引数で指定されたパスに一致するものが Web アプリケーション内にあると、そのサブパス以下にあるすべてのリソースのパス名をディレクトリに似た形式のリストにして返します。サブディレクトリのパスを示すパスは、'/' で終了します。返されたパスはすべて Web アプリケーションのルートに対する相対パスであり、先頭に '/' が付いています。たとえば、以下を含む 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/"} が返されます。
パラメータ:
path - リソースとの照合に使用するパスの一部 '/' で始まっている必要がある。
戻り値:
ディレクトリのリストが格納された Set。指定されたパスで始まる Web アプリケーション内にリソースがない場合は null
導入されたバージョン:
Servlet 2.3

getResource

public java.net.URL getResource(java.lang.String path)
                         throws java.net.MalformedURLException
指定されたパスにマップされたリソースへの URL を返します。パスは "/" で始まる必要があり、現在のコンテキストルートへの相対パスとして解釈されます。

このメソッドによって、サーブレットコンテナは、任意のソースからリソースをサーブレットが利用できるようにします。リソースは、ローカルまたはリモートのファイルシステムにあっても、データベースまたは .war ファイル内にあってもかまいません。

サーブレットコンテナは、リソースにアクセスするのに必要な URL ハンドラおよび URLConnection オブジェクトを実装している必要があります。

指定されたパス名にマップされたリソースが存在しない場合、このメソッドは null を返します。

コンテナによっては、URL クラスのメソッドを使用して、このメソッドによって返された URL へ出力できるようにするものもあります。

リソースのコンテンツが直接返されるので、.jsp ページを要求すると JSP のソースコードが返されることに注意してください。実行結果をインクルードする場合は、代わりに RequestDispatcher を使用します。

このメソッドは、クラスローダに基づいてリソースを検索する java.lang.Class.getResource とは異なる用途に使われます。このメソッドでは、クラスローダを使用しません。

パラメータ:
path - リソースへのパスを指定する String
戻り値:
指定されたパスにあるリソース。そのパスにリソースがない場合は null
例外:
java.net.MalformedURLException - 正しい形式でパス名が指定されなかった場合

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String path)
指定されたパスにあるリソースを InputStream オブジェクトとして返します。

InputStream 内には、さまざまな型や長さを持つデータが格納されます。パスは、getResource に定められた規則に従って指定する必要があります。指定されたパスにリソースがない場合、このメソッドは null を返します。

getResource メソッドでは、コンテンツの長さやタイプなどのメタ情報が得られますが、このメソッドを使用するとそれらの情報は失われます。

サーブレットコンテナは、リソースにアクセスするのに必要な URL ハンドラおよび URLConnection オブジェクトを実装している必要があります。

このメソッドは、クラスローダを使用する java.lang.Class.getResourceAsStream とは異なります。このメソッドによって、サーブレットコンテナは、クラスローダを使用せずに、どのような場所からでもサーブレットがリソースを使用できるようになります。

パラメータ:
path - リソースへのパスを指定する String
戻り値:
サーブレットへ返される InputStream。指定されたパスにリソースがない場合は、null

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String path)
指定されたパスにあるリソースのラッパーとして機能する RequestDispatcher オブジェクトを返します。RequestDispatcher オブジェクトは、要求をリソースへ転送するため、または応答内にリソースをインクルードするために使用できます。リソースは、動的または静的のどちらでもかまいません。

パス名は "/" で始める必要があり、現在のコンテキストルートに対する相対パスとして解釈されます。外部コンテキストのリソースを使用するにはgetContext を使用して、RequestDispatcher を取得してください。ServletContextRequestDispatcher を返すことができない場合、このメソッドは null を返します。

パラメータ:
path - リソースへのパス名を指定する String
戻り値:
指定されたパスにあるリソースのラッパーとして機能する RequestDispatcher オブジェクト
関連項目:
RequestDispatcher, getContext(java.lang.String)

getNamedDispatcher

public RequestDispatcher getNamedDispatcher(java.lang.String name)
指定されたサーブレットのラッパーとして機能する RequestDispatcher オブジェクトを返します。

サーブレットおよび JSP ページは、サーバ設定ツールまたは Web アプリケーションの配備記述子によって名前を付けることができます。サーブレットインスタンスは、ServletConfig.getServletName() を使用して名前を取り出すことができます。

なんらかの理由で ServletContextRequestDispatcher を返すことができない場合、このメソッドは null を返します。

パラメータ:
name - ラップするサーブレットの名前を指定する String
戻り値:
指定されたサーブレットのラッパーとして機能する RequestDispatcher オブジェクト
関連項目:
RequestDispatcher, getContext(java.lang.String), ServletConfig.getServletName()

getServlet

public Servlet getServlet(java.lang.String name)
                   throws ServletException
推奨されていません。 Java Servlet API 2.1 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、ServletContext からサーブレットを取得するために定義されました。このバージョンでは、このメソッドは常に null を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。

このメソッドの代わりに、サーブレットは ServletContext クラスを使用して情報を共有することができます。また、一般の非サーブレットクラスでメソッドを呼び出して、共有ビジネスロジックを実行することができます。


getServlets

public java.util.Enumeration getServlets()
推奨されていません。 Java Servlet API 2.0 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、このサーブレットコンテキストにとって既知の、すべてのサーブレットの Enumeration を返すために定義されました。このバージョンでは、このメソッドは常に空の Enumeration を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。


getServletNames

public java.util.Enumeration getServletNames()
推奨されていません。 Java Servlet API 2.1 以降では、直接的な置き換えメソッドはありません。

このメソッドは当初、このコンテキストにとって既知の、すべてのサーブレット名の Enumeration を返すために定義されました。このバージョンでは、このメソッドは常に空の Enumeration を返し、バイナリの互換性を保つためにのみ残されています。このメソッドは、Java Servlet API の将来のバージョンでは完全に削除されます。


log

public void log(java.lang.String msg)
指定されたメッセージを、サーブレットのログファイル、通常はイベントログに書き出します。サーブレットログファイルの名前とタイプは、サーブレットコンテナに依存します。
パラメータ:
msg - ログファイルへ書き出すメッセージを指定する String

log

public void log(java.lang.Exception exception,
                java.lang.String msg)
推奨されていません。 Java Servlet API 2.1 以降では、代わりに log(String message, Throwable throwable) を使用します。

このメッセージは当初、例外のスタックトレースと説明用のエラーメッセージを、サーブレットのログファイルへ書き出すために定義されました。


log

public void log(java.lang.String message,
                java.lang.Throwable throwable)
該当の Throwable 例外を説明するメッセージとスタックトレースを、サーブレットのログファイルに書き出します。サーブレットログファイルの名前とタイプはサーブレットコンテナによって異なり、通常はイベントログになります。
パラメータ:
message - エラーまたは例外を説明する String
throwable - Throwable エラーまたは例外

getRealPath

public java.lang.String getRealPath(java.lang.String path)
指定された仮想パスに対応する実際のパスを格納した String を返します。たとえば、パス「/index.html」を指定するとサーバのファイルシステム上の絶対ファイルパスを返します。これは「http://host/contextPath/index.html」への要求によって提供されるファイルへのパスです。この場合の contextPath は、この ServletContext のコンテキストパスを意味しています。

返される実際のパスは、適切なパスの区切り文字も含めて、サーブレットコンテナが実行されているコンピュータおよびオペレーティングシステムに合わせられた形式です。コンテンツが .war アーカイブにより提供されている場合など、なんらかの理由でサーブレットコンテナが仮想パスを実際のパスに変換できない場合、このメソッドは null を返します。

パラメータ:
path - 仮想パスを指定する String
戻り値:
実際のパスを指定する String。変換が実行できない場合は null

getServerInfo

public java.lang.String getServerInfo()
サーブレットが実行されているサーブレットコンテナの名前とバージョンを返します。

返される文字列の形式は、servername/versionnumber です。たとえば JavaServer Web Development Kit の場合、JavaServer Web Dev Kit/1.0 の文字列が返されます。

サーブレットコンテナは、主要文字列の後のかっこ内に、たとえば JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86) のように、ほかのオプションの情報も返すことができます。

戻り値:
少なくともサーブレットコンテナ名とバージョン番号を含む String

getInitParameter

public java.lang.String getInitParameter(java.lang.String name)
指定された初期化パラメータについて、その値が格納された String を返します。初期化パラメータはコンテキスト内で有効です。パラメータが存在しない場合は、null を返します。

このメソッドで、「Web アプリケーション」全体で有効な設定情報が利用できるようになります。たとえば、Web マスターの電子メールアドレス、または重要なデータを保持しているシステムの名前を提供することができます。

パラメータ:
name - 値が要求されているパラメータの名前を表す String
戻り値:
指定された名前に対応する初期化パラメータの値が格納された String
関連項目:
ServletConfig.getInitParameter(java.lang.String)

getInitParameterNames

public java.util.Enumeration getInitParameterNames()
コンテキストの初期化パラメータの名前を、String オブジェクトの Enumeration として返します。コンテキストに初期化パラメータがない場合は、空の Enumeration を返します。
戻り値:
コンテキストの初期化パラメータの名前が格納された String オブジェクトの Enumeration
関連項目:
ServletConfig.getInitParameter(java.lang.String)

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
指定された名前に対応するサーブレットコンテナの属性を返します。その名前の属性がない場合は、null を返します。属性を使用して、サーブレットコンテナは、このインタフェースが提供しないような追加情報をサーブレットに与えることができます。属性については、サーバのマニュアルを参照してください。サポートされる属性のリストは、getAttributeNames を使用して取得できます。

属性は java.lang.Object として、またはなんらかのサブクラスとして返されます。属性の名前はパッケージ名と同じ規則に従う必要があります。Java Servlet API 仕様では、java.*javax.*、および sun.* に一致する名前を予約しています。

パラメータ:
name - 属性の名前を指定する String
戻り値:
属性の値を含む Object。指定された名前と一致する属性が存在しない場合は null
関連項目:
getAttributeNames()

getAttributeNames

public java.util.Enumeration getAttributeNames()
このサーブレットのコンテキスト内で利用可能な属性名が格納された Enumeration を返します。属性の値を入手するには、属性名を指定した getAttribute(java.lang.String) メソッドを使用してください。
戻り値:
属性名の Enumeration
関連項目:
getAttribute(java.lang.String)

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object object)
オブジェクトを、このサーブレットのコンテキスト内にある属性名にバインドします。指定された名前がすでに属性に使用されている場合は、その属性が新しい属性に置き換えられます。

リスナーが ServletContext 上に設定されている場合は、コンテナがそのことをリスナーに通知します。

null 値が渡された場合の結果は、removeAttribute() を呼び出した場合と同じです。

属性の名前はパッケージ名と同じ規則に従う必要があります。Java Servlet API 仕様では、java.*javax.*、および sun.* に一致する名前を予約しています。

パラメータ:
name - 属性の名前を指定する String
object - バインドされる属性を表す Object

removeAttribute

public void removeAttribute(java.lang.String name)
指定された名前の属性をサーブレットコンテキストから削除します。削除した後に属性の値を取得する getAttribute(java.lang.String) を呼び出すと、null が返されます。

リスナーが ServletContext 上に設定されている場合は、コンテナがそのことをリスナーに通知します。

パラメータ:
name - 削除する属性の名前を指定する String

getServletContextName

public java.lang.String getServletContextName()
この ServletContext に対応するこの Web アプリケーションの名前を返します。この名前は、配備記述子の display-name 要素で与えられた Web アプリケーション名です。
戻り値:
Web アプリケーションの名前。 配備記述子内に名前が宣言されていない場合は null
導入されたバージョン:
Servlet 2.3


Copyright 2002 Sun Microsystems, Inc. All rights reserved.
使用には使用許諾契約が適用されます。