2020년 9월 5일 토요일

스프링 MVC 인터셉터(Spring MVC Interceptor), 커스텀 로깅 기능 구현 실습, (Spring동영상강좌)스프링 MVC 인터셉터(Spring MVC Interceptor), 커스텀 로깅 기능 구현 실습

 스프링 MVC 인터셉터(Spring MVC Interceptor), 커스텀 로깅 기능 구현 실습, (Spring동영상강좌)스프링 MVC 인터셉터(Spring MVC Interceptor), 커스텀 로깅 기능 구현 실습


http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=859








 

스프링 MVC 인터셉터(Spring MVC Interceptor), 커스텀 로깅 기능 구현 실습

 

n  Spring MVC는 서블릿 필터와 유사하게 HTTP Request(요청)를 앞단/뒤단에서 가로챌 수 있는 메커니즘을 제공한다.(org.springframework.web.servlet.HandlerInterceptor)

 

n  인터셉터가 되기 위해서는 HandlerInterceptor를 구현 또는 HandlerInterceptorAdapter를 상속받아야 한다 HandlerInterceptor를 구현하는 경우에는 세가지 메소드(preHandle(), postHandle(), afterCompletion() )를 다 구현해야 하지만 HandlerInterceptorAdapter를 상속받는 경우에는 필요한 메소드만 재정의하면 된다.

 

 

 

n  preHandle() : 컨트롤러 메소드가 실행되기 전에 실행되며 bool형 리턴 한다실행체인에서 계속 실행할지 중단할지를 true, false로 전달한다. false가 리턴되면 디스패처 서블릿은 핸들러가 직접 요청을 처리하여뷰를 직접 다룬다고 생각하고 다른 인터셉터나 핸들러의 실행을 중단한다.

n  postHandle() : 컨트롤러 메소드가 실행된 후 호출 된다.

n  afterCompletion() : 모든 요청이 완료되고 VIEW가 생성 된 후(응답이 만들어 진후호출된다.

 

n  Servlet Filter와 Interceptor의 차이

ü  서블릿 필터는 Dispatcher Servlet이 호출되기전인터셉터는 Dispatcher Servlet이 호출된 후

ü  서블릿 필터는 web.xml에서 설정인터셉터는 스프링 설정파일에서 설정

 

n  실습(인터셉터를 이용한 커스텀 로깅 구현)

n  File >> new >> Project >> Spring Legacy Project >> Spring MVC Project

(STS4 에서는 Spring Legacy Project가 없으니 help >> Eclipse MarketPlace에서 “sts”로 검색 후 “Spring Tools 3 Add-On  for Spring Tools 4 3.9.14.CI”를 설치하자 

n  프로젝트 명 : interceptorTest.

n  Top-level package : a.b.interceptorTest

(기본적으로 Spring Web MVC HelloWorld 예제 템플릿이 다운로드 된다.)

n  LoggingInterceptor.java

package a.b.interceptorTest;

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.web.servlet.handler.HandlerInterceptorAdapter;

 

public class LoggingInterceptor

         extends HandlerInterceptorAdapter {

     // Spring5는 별도의 추가없이 Log4j 2.x, SLF4J

     // JUL(java.util.logging)을 자동으로 인식한다.

     private static Logger logger

       = LoggerFactory.getLogger(LoggingInterceptor.class);

    

     @Override

     public boolean preHandle(

       HttpServletRequest request,

       HttpServletResponse response,

       Object handler) throws Exception {

        

              logger.info("[Controller Method 호출 전]");

              logger.info("[" + request.getMethod() + "]" );

            logger.info("[" + request.getRequestURL() + "]");

        

         return true;

     }

}

n  Servlet-context.xml 에 인터셉터 추가

<interceptors>

     <beans:bean class="a.b.interceptorTest.LoggingInterceptor" />

</interceptors>

 

n  실행 http://localhost:8080/interceptorTest/ 요청으로 HelleoWorld 예제를 실행하고 콘솔창에서 로그를 확인하자.

 

INFO : a.b.interceptorTest.LoggingInterceptor - [Controller Method 호출 전]

INFO : a.b.interceptorTest.LoggingInterceptor - [GET]

INFO : a.b.interceptorTest.LoggingInterceptor - [http://localhost:8080/interceptorTest/]

 

INFO : a.b.interceptorTest.HomeController - Welcome home! The client locale is ko_KR.

 

#스프링강좌, #스프링인터셉터, #스프링교육, #스프링강의, #SpringInterceptor, #Spring강의, #Spring강좌, #인터셉터, #스프링Interceptor, #preHandle, #postHandle

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...