サーブレットの init() と destroy() - Java

サーブレットのinit() destroy()イベントが呼ばれるタイミングを確認します。

コード(index.jsp)

<%@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="ServletLifecycle">Click</a>
  </body>
</html>

コード (ServletLifecycle.java)

package webApplication2;

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

public class ServletLifecycle extends HttpServlet {

  public void init() {
    //標準出力でメッセージを表示
    System.out.println("init() -- ServletInitialized");
  }

  public void service(ServletRequest req, ServletResponse res)
          throws ServletException, IOException {
    res.setContentType("text/html; charset=ISO-8859-1");
    PrintWriter out = res.getWriter();

    out.println("<HTML>");
    out.println("<HEAD>");
    out.println("<TITLE>ServletLifecycle</TITLE>");
    out.println("</HEAD>");
    out.println("<BODY>");
    out.println("<H1>ServletLifecycle</H1>");
    out.println("<BR><HR><BR>");
    out.println("<P>");
    out.println("service() method write message :");
    out.println("<FONT size=\"20\" color=\"RED\"> " + "Hello Servlet World !" + "</FONT>");
    out.println("</P>");
    out.println("</BODY>");
    out.println("</HTML>");
  }

  public void destroy() {
    //標準出力でメッセージを表示
    System.out.println("destroy() -- ServletDestroied");
  }

  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.close();
  }

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

  /** 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 {
    processRequest(request, response);
  }

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

解説 (serviceメソッド)

Content-Typeをtext/htmlにキャラクターセットをISO-8859-1に設定します。
 res.setContentType("text/html; charset=ISO-8859-1");

PrintWriterを取得します。
 PrintWriter out = res.getWriter();

 out.println("<HTML>");
 out.println("<HEAD>");
 out.println("<TITLE>ServletLifecycle</TITLE>");
 out.println("</HEAD>");
 out.println("<BODY>");
 out.println("<H1>ServletLifecycle</H1>");
 out.println("<BR><HR><BR>");
 out.println("<P>");
 out.println("service() method write message :");
 out.println("<FONT size=\"20\" color=\"RED\"> " + "Hello Servlet World !" + "</FONT>");
 out.println("</P>");
 out.println("</BODY>");
 out.println("</HTML>");
PrintWiterを用いてサーブレットのレスポンスとして返すHTMLを出力します。

コード (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">
  <servlet>
    <servlet-name>ServletLifecycle</servlet-name>
    <servlet-class>webApplication2.ServletLifecycle</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletLifecycle</servlet-name>
    <url-pattern>/ServletLifecycle</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アプリケーションを停止します。サーブレットエンジンやWebアプリケーションを停止するとdestoy()イベントが呼び出されます。

実行結果(ServletLifecycle)


実行結果(tomcat7-stdout.yyyy-MM-dd)

実行結果はログファイルにも出力されます。
(ログファイルはデフォルトではC:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\)に保存されます。
2011-MM-dd hh:mm:ss Commons Daemon procrun stdout initialized
2011-MM-dd hh:mm:ss Commons Daemon procrun stdout initialized
init() -- ServletInitialized
destroy() -- ServletDestroied

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