フィルタのメソッドの呼ばれる順序とタイミング - JSP

コード (MyFilter.java)

package webApplication31;

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

public class MyFilter implements Filter {

  /** Creates a new instance of MyFilter */
  public MyFilter() {
  }

  public void init(FilterConfig filterConfig) {
    System.out.println("MyFilter Initialized!");
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
    System.out.println("Filtering Execute");
    try {
      chain.doFilter(request, response);
    } catch (Exception e) {
    }
  }

  public void destroy() {
    System.out.println("MyFilter Destroyed");
  }
}

コード (UseFilterServlet.java)

package webApplication31;

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

public class UseFilterServlet extends HttpServlet {

  PrintWriter out = null;

  /** 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 {
    response.setContentType("text/html; encoding=ISO-2022-jp");

    try {
      out = response.getWriter();
      out.println("<HTML>");
      out.println("<HEAD>");
      out.println("<TITLE>Filter Test</TITLE>");
      out.println("</HEAD>");
      out.println("<BODY>");
      out.println("<H1>Filter Test</H1>");
      out.println("<BR><HR><BR>");

      out.println("<p align=\"center\">");
      out.println("<FONT size=\"20\">Output Filtering Logging!</FONT>");
      out.println("</P>");

      out.println("</BODY>");
      out.println("</HTML>");

    } catch (Exception e) {
    } finally {
      try {
        out.close();
      } catch (Exception e) {
      }
    }
  }

  /** 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";
  }
}

コード (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">
  <filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>webApplication31.MyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>MyFilter</filter-name>
    <servlet-name>UseFilterServlet</servlet-name>
  </filter-mapping>
  <servlet>
    <servlet-name>UseFilterServlet</servlet-name>
    <servlet-class>webApplication31.UseFilterServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UseFilterServlet</servlet-name>
    <url-pattern>/UseFilterServlet</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>

実行結果 (標準出力)

MyFilter Initialized!
Filtering Execute

※Tomcatの終了、Webアプリケーションの停止をすると"MyFilter Destroyed"が表示される。

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