스프링과 서블릿 JSP의 구조 비교

Jay_u·2023년 5월 12일
0

Spring

목록 보기
2/3



서블릿과 JSP로 프로젝트를 완성한 후 스프링을 배우기 시작하면서
대체된 부분이 많다는 점을 깨달았습니다.
이번 글에서는 서블릿과 JSP의 작동방법이 스프링에서는 어떻게 변화되고 있는지 알아보겠습니다.


FrontController 패턴

서블릿, JSP 에서 사용하는 MVC패턴으로 공통 처리부분을 해결하기 위해서 프론트 컨트롤러 패턴을 활용함


Spring MVC

스프링에서는 Handler, HandlerAdapter, ViewResolver가 등장하는데요.

핸들러는 클라이언트의 요청을 처리하는 처리자로 @Controller 클래스를 의미합니다.

HadlerAdapter 는 다른 프레임워크의 Hadler를 Spring MVC에 통합하는데 사용하는 것으로 어댑터(usb 선을 통해 충전하고 C타입이나 아이폰을 충전하거나..)를 떠올리시면 편합니다.

다른 프레임워크의 Handler를 변환시켜 접목시키는 것입니다.

ViewResolver 는 DispatcherServlet에서 받아온 View 이름을 적절한 View 객체로 리턴해주는 역할을 합니다.


Spring MVC 동작순서는

  1. Dispatcher Servlet이 서블릿으로 자동등록되면서
  2. 핸들러를 조회하고
  3. 실행할 핸들러 어댑터가 있는지 조회하고
  4. 실행할 어댑터를 실행시키고
  5. 핸들러를 실행합니다.

이때 핸들러 매핑이나 핸들러 어댑터가 없다면 에러가 발생하게 되고 @Controller를 실행시키지 못합니다.

  1. 모델까지 갔다가 ModelAndView를 반환해오면
  2. Dispatcher Servlet은 이를 ViewResolver에게 줍니다.
  3. 뷰 리졸버는 이를 적절한 View 객체로 반환하고 (JSP)
  4. Dispatcher Servlet 뷰를 렌더링합니다.

Spring MVC 패턴의 이점

  1. 서블릿 API와 결합하지 않고 독립적으로 작동하며, 다양한 뷰 기술과 연동이 용이

  2. MockMvc 라는 테스트용 API를 통해 컨트롤러를 쉽게 테스트 가능

  3. 스프링 프레임워크와의 통합
    예컨데 스프링 IoC 컨테이너를 이용하여 컨트롤러를 관리하고 AOP를 이용하여 트랜잭션을 처리

  4. Spring Security 보안 프레임워크 활용 가능

  5. 이처럼 다양한 기능과 라이브러리를 이용하여 코드의 양 줄일 수 있음

profile
정확한 정보를 전달할려고 노력합니다.

0개의 댓글