JAVA:IT TRICK

アプリケーションの初期化パラメータ

サーブレットはweb.xmlでアプリケーション共通な設定を定義し、それを読み込んで処理することができます。ここでは複数のサーブレットが共通な設定をweb.xmlから読み込む方法について説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

サーブレットはweb.xmlでアプリケーション共通な設定情報(初期化パラメータ)を定義し、それを読み込んで処理することができます。ここでは複数のサーブレットが共通な設定情報(初期化パラメータ)をweb.xmlから読み込む方法について説明します。

サーブレット共通な初期化パラメータを読み込むにはgetServletContext()メソッドを使ってServletContextのオブジェクトを取得し、ServletContextのgetInitParameterNames()メソッドとgetInitParameter()メソッドを使ってパラメータを読込ます。以下は初期化パラメータを取得するサンプルです。

初期化パラメータ取得サンプル

このサンプルでは以下のweb.xml内にサーブレット共通な初期化パラメータを二つ定義しています。初期化パラメータを定義するにはweb-appタグの子要素としてcontext-paramタグを使って定義します。また、パラメータはparam-nameタグでパラメータ名、param-valueタグでパラメータの値をセットとしてcontext-param子要素として定義します。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<context-param>
		<param-name>key1</param-name>
		<param-value>value1</param-value>
	</context-param>

	<context-param>
		<param-name>key2</param-name>
		<param-value>value2</param-value>
	</context-param>

	<servlet>
		<servlet-name>50011</servlet-name>
		<servlet-class>Sample50011</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>50011</servlet-name>
		<url-pattern>/50011</url-pattern>
	</servlet-mapping>

</web-app>

以下はweb.xml内で定義した二つの初期化パラメータを読み込んで画面に出力するサーブレットです。

Sample50011.java

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Sample50011 extends HttpServlet {

	public void doGet(HttpServletRequest request,
			HttpServletResponse response)
	throws IOException, ServletException {

		response.setContentType("text/html; charset=Windows-31J");
		PrintWriter out = response.getWriter();

		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body>");

		// アプリケーションの初期化パラメータを読み込む
		ServletContext context = this.getServletContext();
		Enumeration names = context.getInitParameterNames();

		while(names.hasMoreElements()) {
			String name = (String)names.nextElement();
			String value = context.getInitParameter(name);
			out.println("name:" + name + "<br />");
			out.println("value:" + value + "<br />");
		}


		out.println("</body>");
		out.println("</html>");

	}
}