初期値をサーブレット内で取り出す
ではweb.xmlファイル内に<init-param>要素を使って定義した初期値をサーブレット内で取り出す方法を確認していきます。
サーブレットの元になるHttpServletクラスの親クラスであるGenericServletクラスに初期値を取り出すための"getInitParameter"メソッドが定義されています。
getInitParameter public java.lang.String getInitParameter(java.lang.String name)
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ですが、初期値として消費税の税率を設定することにします。
※上記は同じ名前のファイルを使う関係でリンク先には「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」パラメータに対応する初期値を取り出し、税金を含めた製品の販売費を表示するようにしています。
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 )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。