web.xmlに記述した環境変数や初期変数を取得する - Java

web.xmlに記述した環境変数や初期変数を取得するコードを紹介します。

コード (サーブレット:GetEnvironment.java)

package webApplication5;

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

public class GetEnvironment extends HttpServlet {
  private String directory;
  private String image;

  public void init() {
    // Context 初期化パラメータ情報
    ServletConfig config = getServletConfig();
    ServletContext context = config.getServletContext();
    directory = context.getInitParameter("directory");

    // Servlet 初期化パラメータ情報
    image = config.getInitParameter("image");
  }

  /** Handles the HTTP <code>GET</code> method.
   * @param request servlet request
   * @param response servlet response
   */
  protected void doGet(HttpServletRequest req, HttpServletResponse res)
          throws ServletException, IOException {
    res.setContentType("text/html; charset=ISO-8859-1");
    PrintWriter out = res.getWriter();

    //クライアントに送るHTMLを作成
    out.println("<HTML>");
    out.println("<HEAD>");
    out.println("<TITLE>Environment</TITLE>");
    out.println("</HEAD>");
    out.println("<BODY>");
    out.println("<H1>Get Environment</H1>");
    out.println("<BR><HR><BR>");
    out.println("<UL>");

    //HTTPリクエスト情報表示
    out.println("<H2>HTTP Request Data</H2>");
    out.println("<UL>");
    out.println("<LI> Request Method :" + req.getMethod());
    out.println("<LI> Request URI :" + req.getRequestURI());
    out.println("<LI> Servlet Path :" + req.getServletPath());
    out.println("</UL><BR>");

    //初期化パラメータ情報表示
    out.println("<H2>Initialization parameter</H2>");
    out.println("<IMG src=\"." + directory + "/" + image + "\"> <BR>");
    out.println("File PATH :" + directory + "/" + image);
    out.println("<UL>");
    out.println("<LI>Context Initialization parameter :" + directory);
    out.println("<LI>Servlet Initialization parameter :" + image);
    out.println("</UL><BR>");
    out.println("</BODY>");
    out.println("</HTML>");
    out.close();
  }

  /** Handles the HTTP <code>POST</code> method.
   * @param request servlet request
   * @param response servlet response
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
  }

  /** Returns a short description of the servlet. */
  public String getServletInfo() {
    return "Short description";
  }
}

解説 (init()メソッド)

getServletConfig()メソッドを呼び出し、サーブレットの設定情報を取得します。
ServletConfig config = getServletConfig();

ServletConfig.getServletContext()メソッドを呼び出し、ServletContextを取得します。
ServletContext context = config.getServletContext();

ServletContext.getInitParameter()メソッドを呼び出し、Contextの初期化パラメーターを取得します。 Web.xmlの<context-param>タグで記述している<param-name>がdirectoryの<param-value>の値を取得します。
directory = context.getInitParameter("directory");

ServletConfig.getInitParameter()を呼び出し、サーブレットの初期化パラメーターを取得します。web.xmlの<servlet>タグ内の<init-param>タグで記述している <param-name>がimageの<param-value>の値を取得します。
image = config.getInitParameter("image");

解説 (doGet()メソッド)

doGet()メソッドを実装します。
  protected void doGet(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {

setContentType()メソッドを呼び出し、MIMEをtext/htmlに設定します。またキャラクターセットをISO-8859-1にします。
  res.setContentType("text/html; charset=ISO-8859-1");

PrintWriterを取得し、サーブレットが返すHTMLを出力します。
  PrintWriter out = res.getWriter();
  out.println("<HTML>");
  out.println("<HEAD>");
  out.println("<TITLE>Environment</TITLE>");
  out.println("</HEAD>");
  out.println("<BODY>");
  out.println("<H1>Get Environment</H1>");
  out.println("<BR><HR><BR>");
  out.println("<UL>");

HttpServletRequest.getMethod(), HttpServletRequest.getRequestURI(), HttpServletRequest.ServletPath()メソッドを呼び出し、サーブレットへアクセスしたメソッド、サーブレットのURI、サーブレットのパスを表示します。
  out.println("<H2>HTTP Request Data</H2>");
  out.println("<UL>");
  out.println("<LI> Request Method :" + req.getMethod());
  out.println("<LI> Request URI :" + req.getRequestURI());
  out.println("<LI> Servlet Path :" + req.getServletPath());
  out.println("</UL><BR>");

init()メソッドで取得したパラメータを使って画像を表示します。画像が保存されているディレクトリと画像ファイル名をパラメータにしています。またパラメータの内容も画面に表示します。
  out.println("<H2>Initialization parameter</H2>");
  out.println("<IMG src=\"." + directory + "/" + image + "\"> <BR>");
  out.println("File PATH :" + directory + "/" + image);
  out.println("<UL>");
  out.println("<LI>Context Initialization parameter :" + directory);
  out.println("<LI>Servlet Initialization parameter :" + image);
  out.println("</UL><BR>");
  out.println("</BODY>");
  out.println("</HTML>");
  out.close();

コード (web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 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">
  <context-param>
    <param-name>directory</param-name>
    <param-value>/image</param-value>
  </context-param>
  <servlet>
    <servlet-name>GetEnvironment</servlet-name>
    <servlet-class>webApplication5.GetEnvironment</servlet-class>
    <init-param>
      <param-name>image</param-name>
      <param-value>duke.gif</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>GetEnvironment</servlet-name>
    <url-pattern>/GetEnvironment</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

コード (webページ)

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
  </head>
  <body>
    <h1>JSP Page</h1>
    <a href="GetEnvironment">click</a>
  </body>
</html>

実行結果

プロジェクトを実行し、サーブレットにアクセスすると、下図のページが表示されます。


著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-20
作成日: 2011-02-10
iPentec all rights reserverd.