디스패처 서블릿(Dispatcher Servlet) 알아보기

디스패처 서블릿이란? 디스패처 서블릿은 스프링 MVC의 핵심이다. 클라이언트의 요청을 전달받아 적절한 컨트롤러로 요청을 전달하고, 컨트롤러가 반환한 결과를 View로 전달하는 역할을 한다. 디스패처 서블릿은 웹 애플리케이션에서 하나만 존재하며, 클라이언트의 모든 요청을 처리한다. 디스패처 서블릿의 동작 과정 클라이언트의 요청을 전달받는다. Handler Mapping을 통해 클라이언트의 요청을 처리할 컨트롤러를 찾는다. Handler Adapter를 통해 컨트롤러를 실행한다. 컨트롤러가 반환한 결과를 View Resolver를 통해 View로 변환한다. View를 클라이언트에게 전달한다. RestController를 사용할 경우 View Resolver를 사용하지 않는다. 대신에 객체를 JSON 형태로 변환하여 클라이언트에게 전달한다. ...

6월 5, 2024 · 2 분 · 318 단어 · In-Jun Hwang

스프링 인터셉터란 무엇인가?

스프링 인터셉터 인터셉터는 서블릿 필터와 비슷한 역할을 한다. 서블릿 필터는 서블릿 컨테이너에서 요청이 들어오기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 스프링 인터셉터는 스프링 MVC에서 컨트롤러에 요청이 들어가기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 인터셉터는 HandlerInterceptor 인터페이스를 구현하여 사용한다. HandlerInterceptor 인터페이스는 세 가지 메소드를 제공한다. preHandle : 컨트롤러에 요청이 들어가기 전에 실행되는 메소드 postHandle : 컨트롤러에 요청이 들어간 후, 뷰가 렌더링 되기 전에 실행되는 메소드 afterCompletion : 뷰가 렌더링 된 후에 실행되는 메소드 인터셉터 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 컨트롤러에 요청이 들어가기 전에 실행되는 코드 // 만약 false를 반환하면 컨트롤러에 요청이 들어가지 않음 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 컨트롤러가 정상적으로 실행된 이후에 실행되는 코드 // 예외가 발생하면 실행되지 않음 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 뷰가 클라이언트에 응답을 보낸 후에 실행되는 코드 // 예외가 발생한다면 Exception 객체를 통해 예외 정보를 확인할 수 있음 // 예외 정보를 확인해서 로깅할 수 있음 } } 인터셉터 등록 인터셉터를 등록하기 위해서는 WebMvcConfigurer 인터페이스를 구현하여 addInterceptors 메소드를 오버라이딩한다. ...

6월 4, 2024 · 3 분 · 478 단어 · In-Jun Hwang