2013년 9월 5일 목요일

Interceptor

Controller 가 엄청 많은데 log 형식을 바꾼다면 모든 클래스에 손을 대야한다. 그러나 Interceptor 를 활용하면 손쉽게 관리할 수 있다.
package com.jetddo.study.interceptor;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


@Component
public class LoggingInterceptor implements HandlerInterceptor {

   private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);

   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
     Object handler) throws Exception {
    
    logger.info("-------------------------------");
       logger.info("url: "+request.getRequestURI());
       
       String param = "";
       
       Enumeration< ? > e = (Enumeration< ? >)request.getParameterNames();
       while(e.hasMoreElements()){
        
        String name = (String)e.nextElement();
        
        param += "["+name+": "+request.getParameter(name)+"]";
       }
       
       if(param.trim().length() > 0){
        logger.info("params: "+param);
       }
       
       return true;
   }
   
   public void postHandle(HttpServletRequest request, HttpServletResponse response, 
     Object handler, ModelAndView modelAndView) throws Exception {

   }

   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, 
     Object handler, Exception ex) throws Exception {

   }
}

위와 같이 작성 후
 
  
   
   
  
  
   
   
  
 
servlet-context.xml 에 위와 같이 작성한다.

댓글 없음:

댓글 쓰기