[SPRING]#41 도서 쇼핑몰 구현 (로그 기록4)
·
SPRING
HandlerInterceptor를 사용해서 로그 기록 HandlerInterceptor 인터페이스와 Log4j를 이용해서 웹에 대한 모든 요청에 대해 접근 내역을 콘솔에 출력되도록 구현해 보겠습니다. pom.xml 로그 관련 의존 라이브러리가 등록되어 있는지 확인합니다. 4.0.0 com.springmvc controller BookMarket war 1.0.0-BUILD-SNAPSHOT 11 5.3.19 1.9.9.1 1.7.36 5.6.3 1.4 2.11.0 org.springframework spring-context ${org.springframework-version} commons-logging commons-logging org.springframework spring-webmvc ${or..
[SPRING]#40 도서 쇼핑몰 구현 (로그 기록3)
·
SPRING
HandlerInterceptor를 이용한 로그 기록 HandlerInterceptor 인터페이스는 preHandle(), postHandle(), afterCompletion() 세 가지 메소드를 가지고 있습니다. preHandle() 메소드는 URL이 컨트롤러에 들어가기 전에 호출되며, false로 반환하면 이후 내용은 실행하지 않습니다. postHandle() 메소드는 URL을 컨트롤러가 처리한 후 호출되며, 컨트롤러에서 예외 발생 시 더 이상 실행되지 않습니다. afterCompletion() 메소드는 컨트롤러가 웹 요청을 처리하고 뷰에 응답 전송이 종료된 후 호출됩니다. HandleInterceptor 인터페이스 메소드 형식은 다음과 같습니다. boolean preHandle(HttpServle..
[SPRING]#39 도서 쇼핑몰 구현 (로그 기록2)
·
SPRING
인터셉터 사용자가 URL을 요청해서 컨트롤러에 요청이 들어가기 전, 컨트롤러가 웹으로 응답하기 전 가로채어 특정 작업을 처리하는 것을 의미합니다. 핸들러 인터셉터라고도 합니다. 컨트롤러에 들어오는 요청 HTTPRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 합니다. 인터셉터는 디스패처 서블릿이 컨트롤러를 호출하기 전후에 요청과 응답을 가로채기 때문에 다음과 같은 특정 작업을 수행할 수 있습니다. 응답 페이지를 출력하기 전 서버에서 미리 데이터를 가져오는 기능 폼에서 제출이 중복으로 일어나는 것을 막는 기능 요청이 처리되기 전에 파일을 업로드하는 기능 각 요청에 대한 상세한 내역을 기록하는 기능 유효성을 검사하는 기능 시간별 동작 및 성능의 병목 지점을 검사하는 기능 인터셉터 ..
[SPRING]#38 도서 쇼핑몰 구현 (로그 기록1)
·
SPRING
로깅 유틸리티 Log4j 아파치 소프트웨어 라이센스에 따라 배포되는 로깅 프레임워크입니다. 자바로 작성되어 있고 안정적이고 빠릅니다. 또한 선택적으로 로그를 남길 수도 있고 특정 파일에 로그를 기록할 수도 있습니다. 웹이 동작하는 중 남긴 로그 기록은 웹의 운영 상황과 상태 정보를 제공하고 파일이나 DB에 남긴 로그 기록은 결과를 분석하는 데 사용이 가능합니다. 개발자에게 있어서 로그 기록은 문제 발생 시 상황을 파악할 수 있는 중요한 요소입니다. 스프링 MVC에서 로깅 유틸리티인 Log4j를 사용하기 위해서 마찬가지로 의존성 라이브러리를 등록해주어야 합니다. pom.xml 파일에 다음과 같이 작성하여 의존 라이브러리를 포함시킵니다. org.slf4j slf4j-api 1.7.25 Log4j의 구조와 로..
[SPRING]#37 도서 쇼핑몰 구현 (예외 처리6)
·
SPRING
@ControllerAdvice를 이용한 예외 처리 앞서 배운 @ControllerAdvice를 이용해서 존재하지 않는 도서 분류를 요청하는 경우 예외 처리를 구현합니다. CommonException.java com.springmvc.exception 패키지에서 CommonException 클래스를 생성합니다. package com.springmvc.exception; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @Contro..
[SPRING]#36 도서 쇼핑몰 구현 (예외 처리5)
·
SPRING
@ControllerAdvice를 이용한 전역 예외 처리 앞서 배운 @ExceptionHandler는 개별 컨트롤러에 대해 예외를 처리합니다. 그러나 예외 발생을 개별 컨트롤러에서 처리하는 것이 아닌 애플리케이션 전체에 대해 적용할 수 있는 @ControllerAdvice가 있습니다. 이를 이용해서 여러 컨트롤러에서 발생할 수 있는 예외들을 공통으로 처리 가능합니다. 형식은 다음과 같습니다. @ControllerAdvice(basePackages={"기본 패키지 이름, ...}) public class 클래스 이름 { ... } @ControllerAdvice에서 사용하는 요소는 다음과 같습니다. 요소 타입 설명 annotations Class[] 클래스의 배열 basePackageClasses Clas..
[SPRING]#35 도서 쇼핑몰 구현 (예외 처리4)
·
SPRING
@ExceptionHandler를 이용한 예외 처리 앞서 배운 @ExceptionHandler를 이용해서 실습 중인 도서 쇼핑몰 구현에서 존재하지 않는 도서 아이디 요청 시 예외 처리를 구현합니다. BookIdException.java BookIdException 클래스를 생성하고 다음과 같은 내용을 추가해줍니다. package com.springmvc.exception; @SuppressWarnings("serial") public class BookIdException extends RuntimeException{ private String bookId; public BookIdException(String bookId) { this.bookId = bookId; } public String getB..
[SPRING]#34 도서 쇼핑몰 구현 (예외 처리3)
·
SPRING
@ExceptionHandler를 이용한 예외 처리 @ExceptionHandler는 컨트롤러의 요청 처리 메소드 실행 중 예외가 발생하면 이를 처리하기 위한 예외 처리 메소드입니다. 형식은 다음과 같습니다. @ExceptionHandler(value={예외 클래스1.class[,예외 클래스2.class,...]}) public String 메소드 이름() { ... } @ExceptionHandler public String 메소드 이름(예외 클래스 exp) { ... } @ExceptionHandler의 value속성은 예외 처리를 담당하는 클래스 이름을 설정합니다. value 속성은 생략이 가능합니다. value 속성을 생략하고 @ExceptionHandler만 사용하기 위해서는 예외 처리 메소드의..