TOPサーバ構築・運用> 共通情報を初期化パラメータで外部化する
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第11回:デプロイメントディスクリプタ活用術(前編)

著者:山田 祥寛   2006/5/22
前のページ  1  2
共通情報を初期化パラメータで外部化する

   アプリケーションで使用しているリソースへのパスや文字エンコーディング名など、アプリケーションが共通に参照するパラメータを個別のJSP&サーブレットで記述するのは好ましくありません。そのような共通情報は、デプロイメントディスクリプタ上の<context-param>要素で初期化パラメータとして設定しておくべきです(リスト2)。
リスト2:web.xml(抜粋)
<context-param>
     <param-name>site.title</param-name>
     <param-value>サーバサイド技術の学び舎- WINGS -</param-value>
</context-param>

   <context-param>要素では、パラメータ名(<param-name>要素)に対して、その値(<param-value>要素)を宣言します。複数の初期化パラメータを設定したい場合には、<context-param>要素を複数併記することも可能です。<context-param>要素で定義された初期化パラメータは、JSPページ(リスト3)やサーブレットクラス(リスト4)で取得することができます。式言語で利用可能な暗黙オブジェクトについては、「第6回」を参照してください。

リスト3:initParam.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
${initParam['site.title']}

リスト4:InitParam.java(抜粋)
response.setContentType("text/html;charset=Windows-31J");
PrintWriter out=response.getWriter();
ServletContext application=this.getServletContext();
out.println(application.getInitParameter("site.title"));

   ちなみに、これまで紹介したJSTLには、あらかじめ規定された予約済みの初期化パラメータが存在します(表2)。

パラメータ名 概要 関係する要素名
javax.servlet.
jsp.jstl.sql.
dataSource
データソース(接続文字列、JDBCドライバ、ユーザーID、パスワードをカンマ区切りで指定) Databaseタグライブラリ全般
javax.servlet.
jsp.jstl.sql.
maxRows
取得可能な最大レコード数 <sql:query>
javax.servlet.
jsp.jstl.
fmt.locale
デフォルトのロケール i18nタグライブラリ全般
javax.servlet.
jsp.jstl.fmt.
fallbackLocale
指定されたロケールが存在しない場合の代替ロケール i18nタグライブラリ全般
javax.servlet.
jsp.jstl.fmt.
request.charset
リクエスト文字エンコーディング <fmt:requestEncoding>
javax.servlet.
jsp.jstl.fmt.
timeZone
デフォルトのタイムゾーン <fmt:timeZone>、<fmt:setTimeZone>
javax.servlet.
jsp.jstl.fmt.
localizationContext
デフォルトのリソース <fmt:bundle>、<fmt:setBundle>

表2:JSTLで規定された初期化パラメータ

   これらの予約パラメータを設定しておくことで、JSTLの記述を簡素化することができます。たとえば、リスト5はi18nライブラリで利用するデフォルトのロケールを宣言しています。

リスト5:web.xml(抜粋)
<context-param>
     <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
     <param-value>ja_JP</param-value>
</context-param>

前のページ  1  2


WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

INDEX
第11回:デプロイメントディスクリプタ活用術(前編)
  はじめに
共通情報を初期化パラメータで外部化する