サーブレットの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