初期値をサーブレット内で取り出す

広告

ではweb.xmlファイル内に<init-param>要素を使って定義した初期値をサーブレット内で取り出す方法を確認していきます。

サーブレットの元になるHttpServletクラスの親クラスであるGenericServletクラスに初期値を取り出すための"getInitParameter"メソッドが定義されています。

Returns a String containing the value of the named initialization parameter, 
or null if the parameter does not exist. See 
ServletConfig.getInitParameter(java.lang.String). 

This method is supplied for convenience. It gets the value of the named 
parameter from the servlet's ServletConfig object. 

Parameters:
  name - a String specifying the name of the initialization parameter 
Returns:
  String a String containing the value of the initialization parameter

"getInitParameter"メソッドの引数には<init-param>要素内の<param-name>要素で記述したパラメータ名を指定します。そしてメソッドの戻り値として<param-value>要素で指定したパラメータ値を取得する事が出来ます。

戻り値はString型の値として取得される点に注意して下さい。

サンプルプログラム

では実際に試してみましょう。

まずweb.xmlですが、初期値として消費税の税率を設定することにします。

web.xml

※上記は同じ名前のファイルを使う関係でリンク先には「web6.xml」というファイルがリンクされています。実際に使う時には「web.xml」に名前を変更してご利用下さい。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

  <servlet>
    <servlet-name>kingaku</servlet-name>
    <servlet-class>Kingaku</servlet-class>
    <init-param>
      <param-name>zeiritsu</param-name>
      <param-value>5</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>kingaku</servlet-name>
    <url-pattern>/kingaku</url-pattern>
  </servlet-mapping>
</web-app>

次にサーブレットのプログラムの方です。下記では初期値として設定した「zeiritsu」パラメータに対応する初期値を取り出し、税金を含めた製品の販売費を表示するようにしています。

Kingaku.java

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

public class Kingaku extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException{

    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    request.setCharacterEncoding("Shift-JIS");

    String ini = getInitParameter("zeiritsu");
    int zeiritsu = 0;

    if (ini == null){
      zeiritsu = 0;
    }else{
      zeiritsu = Integer.parseInt(ini);
    }
    int sale = 100000;

    out.println("<html>");
    out.println("<head>");
    out.println("<title>Hello World!</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<p>");
    out.println("税率は" + zeiritsu + "%です。<br>");
    out.println("お買い上げ金額は" + sale + "です。<br>");

    sale = sale * (100 + zeiritsu) / 100;

    out.println("消費税込みの金額は" + sale + "です。");
    out.println("</p>");
    out.println("</body>");
    out.println("</html>");
  }
}

では実際にブラウザを立ち上げ、「http://localhost:8080/webxmltest/kingaku」にアクセスしてみます。

サーブレットにて初期値の取り出し

このように、web.xmlファイルで定義した初期値をプログラム内にて取得して理由することが出来ます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)