본문 바로가기

JSP

필터 클래스의 init메서드와 destroy메서드

package filter;

 

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.GregorianCalendar;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.annotation.WebInitParam;

 

import org.apache.tomcat.dbcp.pool.impl.GenericKeyedObjectPool.Config;

 

/**

 * Servlet Filter implementation class SimpleFilter

 */

@WebFilter(

         urlPatterns ={"*.jsp"},

             initParams ={

                  @WebInitParam(name = "filename", value ="c:\\logs\\site.log")

             }

         )

public class SimpleFilter implements Filter {

    PrintWriter writer;

    /**

     * Default constructor.

     */

    public SimpleFilter() {

        // TODO Auto-generated constructor stub

    }

 

    /**

     * @see Filter#destroy()

     */

    public void destroy() {

         // TODO Auto-generated method stub

         writer.close();

    }

 

    /**

     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

     */

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

         // TODO Auto-generated method stub

         // place your code here

        

         GregorianCalendar now = new GregorianCalendar();

         writer.printf("현재일시 : %TF %TT %n", now, now);

         String clientAddr = request.getRemoteAddr();

         writer.printf("클라이언트 주소 : %s %n", clientAddr);

        

         // pass the request along the filter chain

        

        

         chain.doFilter(request, response);

        

         String contentType = response.getContentType();

        writer.printf("문서의 컨테트 타입 : %s %n", contentType);

         writer.println("----------------------------------------------");

    }

 

    /**

     * @see Filter#init(FilterConfig)

     */

    public void init(FilterConfig fConfig) throws ServletException {

         // TODO Auto-generated method stub

         String filename = fConfig.getInitParameter("filename");

         if(filename==null) throw new ServletException("로그 파일의 이름을 찾을 없습니다.");

        

         try {

             writer = new PrintWriter(new FileWriter(filename, true), true);

         } catch (IOException e) {

             // TODO Auto-generated catch block

             throw new ServletException("로그 파일을 없습니다.");

         }

        

    }

 

}

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

 

<%

    System.out.println("이것은 JSP 페이지 안에서 출력하는 메시지입니다.");

%>

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

    이것은 필터 테스트를 위해 만들어진 JSP 페이지입니다.

</body>

</html>




로그 파일에 기록되는 것을 확인할 수 있다.