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