Javaに関する様々な情報をご紹介します。

5初期化パラメータの取得

Javaに関する様々な情報をご紹介します。

初期化パラメータの取得

このページでは、web.xmlで指定した初期化パラメータをServletプログラムの中で取得する方法について解説します。初期化パラメータにはDB接続する際のログインID、ログインパスワード、外部ファイルなどを指定します。これにより、これらの値をプログラム中にハードコーディングすることなく、値の変更があった際も容易に対応できるようになります。

Servletプログラム単位の初期化パラメータ

ここでは、Servletプログラム単位に指定する初期化パラメータについて説明します。Servletプログラム単位に指定された初期化パラメータは、他のServletプログラムから取得することはできません。Servletプログラム単位の初期化パラメータはweb.xmlの<servlet>タグ内の<init-param>タグで指定します。

<init-param>タグのサブ要素

要素 内容 要素数
param-name パラメータ名を指定します。 1
param-value パラメータ名に対するパラメータ値を指定します。 1
description パラメータの説明を記載します。 0以上

Servletプログラムに初めてリクエストがあったときinitメソッドが呼び出されます。そのため、通常initメソッド内で初期化パラメータの取得を行います。Servletプログラム単位の初期化パラメータの取得には、ServletConfigインタフェースのメソッドを使用します。

ServletConfigインタフェースのメソッド

戻り型 メソッド 説明
String getInitPara
meter(String)
引数に指定されたパラメータ名に対するパラメータ値を返します。パラメータ名がない場合は、Nullを返します。
Enumeration getInitParameterNames( ) 指定されているすべてのパラメータ名をEnumeration型で返します。パラメータ名がない場合は、空のEnumeration型のオブジェクトを返します。
Servlet
Context
getServlet
Context( )
ServletContextのオブジェクトを返します。
String getServletName( ) 実行しているServletプログラム名を返します。

Servletプログラム単位の初期化パラメータの取得の例を記載します。

web.xmlの例

<servlet>
    <servlet-name>GetConfigServlet</servlet-name>
    <servlet-class>GetConfigServlet</servlet-class>
    <!-- (1)パラメータ名"id"とパラメータ値"java-id"を指定しています。 -->
    <init-param>
        <param-name>id</param-name>
        <param-value>java-id</param-value>
    </init-param>
    <!-- (2)パラメータ名"pass"とパラメータ値"java-pass"を指定しています。 -->
    <init-param>
        <param-name>pass</param-name>
        <param-value>java-pass</param-value>
    </init-param>
</servlet>

Servletプログラムの例

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetConfigServlet extends HttpServlet {
    public void init() {
        //(1)GenericServletクラスのgetServletConfigメソッドを使用し、
        //   ServletConfigオブジェクトを取得します。
        ServletConfig sc = getServletConfig();
        //(2)パラメータ名"id"のパラメータ値を取得しています。
        String id = sc.getInitParameter("id");
        //(3)パラメータ名"pass"のパラメータ値を取得しています。
        String pass = sc.getInitParameter("pass");

        --------------------------------
        --------------------------------
        
    }
}

コンテキスト単位の初期化パラメータ

ここでは、コンテキスト単位に指定する初期化パラメータについて説明します。コンテキストとは、一まとまりのwebアプリケーションのことを言います。Tomcatで言うとwebappsディレクトリ配下のwebアプリケーション毎のことを言います。コンテキスト単位に指定された初期化パラメータはそのコンテキストに属するすべてのServlet・JSPプログラムから取得することができます。コンテキスト単位の初期化パラメータはweb.xmlの<web-app>タグ内の<context-param>タグで指定します。

<context-param>タグのサブ要素

要素 内容 要素数
param-name パラメータ名を指定します。 1
param-value パラメータ名に対するパラメータ値を指定します。 1
description パラメータの説明を記載します。 0以上

コンテキスト単位の初期化パラメータの取得には、ServletContextインタフェースのメソッドを使用します。

ServletContextインタフェースのパラメータ取得関連のメソッド

戻り型 メソッド 説明
String getInitPara
meter(String)
引数に指定されたパラメータ名に対するパラメータ値を返します。パラメータ名がない場合は、Nullを返します。
Enum
eration
getInitPara
meterNames( )
指定されているすべてのパラメータ名をEnumeration型で返します。パラメータ名がない場合は、空のEnumeration型のオブジェクトを返します。

コンテキスト単位の初期化パラメータの取得の例を記載します。

web.xmlの例

<web-app>
    <servlet>
        <servlet-name>GetContextServlet</servlet-name>
        <servlet-class>GetContextServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetContextServlet</servlet-name>
        <url-pattern>/GetContextServlet</url-pattern>
    </servlet-mapping>

    <!-- (1)パラメータ名"id"とパラメータ値"java-id"を指定しています。 -->
    <context-param>
        <param-name>id</param-name>
        <param-value>java-id</param-value>
    </context-param>

    <!-- (2)パラメータ名"pass"とパラメータ値"java-pass"を指定しています。 -->
    <context-param>
        <param-name>pass</param-name>
        <param-value>java-pass</param-value>
    </context-param>

    --------------------------------
    --------------------------------

</web-app>

Servletプログラムの例

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetContextServlet extends HttpServlet {
    public void init() {
        //(1)ServletConfigインタフェースのgetServletContextメソッドで、
        //   ServletContextオブジェクトを取得します。
        ServletContext scon = getServletConfig().getServletContext();
        //(2)パラメータ名"id"のパラメータ値を取得しています。
        String id = scon.getInitParameter("id");
        //(3)パラメータ名"pass"のパラメータ値を取得しています。
        String pass = scon.getInitParameter("pass");

        --------------------------------
        --------------------------------

    }
}

5初期化パラメータの取得