Spring MVC

yeolyeol·2023년 6월 9일
0

til

목록 보기
4/26
post-thumbnail

Java 백엔드 개발자를 희망하고 있는 나는 Spring 프레임워크를 다루는 일이 많았다.
그래서 더 자세히 이해하고 다루기 위해 공부하고 기록한다.


MVC 패턴

소프트웨어 공학에서 사용하는 디자인 패턴 중 하나로 Model, View, Controller의 앞 글짜를 따서 MVC 디자인패턴이라고 한다.

MVC

  • Model
    • 어플리케이션의 정보나 데이터, DB등을 뜻함.
    • 백그라운드에서 동작하며, 사용자가 원하는 데이터나 정보 제공함.
  • View
    • 사용자에게 보여지는 화면, UI를 뜻함.
    • 모델로부터 정보를 받아 표출.
  • Controller의
    • 데이터와 비즈니스 로직 사이의 상호 동작을 관리함.
    • 모델과 뷰를 통제하며 MVC 패턴에서 View와 Model이 직접 상호 통신을 하지 않도록 관리함.

기본적인 흐름

  1. 유저(클라이언트)가 원하는 정보를 얻기 위해 Controller에 요청
  2. 요청을 받은 Controller는 비즈니스 로직 or Model을 통해 원하는 정보를 추출
  3. 정보를 View를 통해 유저(클라이언트)에게 제공

MVC1

MVC1_pattern

  • MVC1의 경우, View와 Controller의 역할이 합쳐져 있는데 이를 JSP가 담당한다.
  • JSP에 Java코드와 Html, css등의 코드가 섞이게 되고, 소스가 복잡해지고 가독성이 안좋아져 유지보수가 어렵다.
  • 단, Jsp하나로 유저의 요청을 받고 응답을 처리하기 때문에 구현난이도는 쉬운편이다.

MVC2

MVC2_pattern

  • MVC1의 유지보수가 힘들다는 단점을 보완한다.
  • 기존에 View와 Controller의 역할을 모두 수행하던 Jsp는 뷰의 역할만 하게 되고, 대산 Controller의 역할을 Servlet(서블릿)이 수행한다.
  • 사용자의 요청을 하나의 컨트롤러(Servlet)가 먼저 받는다. 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 Jsp 페이지로 포워딩한다.

Spring MVC

Spring_MVC

  1. 핸들러 조회 : 핸들러 매핑을 통해 URL에 매핑된 핸들러(컨트롤러) 조회
  2. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터 조회
  3. 핸들러 어댑터 실행: 핸들러 어댑터 실행
  4. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행
  5. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해 반환.
  6. viewResolver 호출: 뷰 리졸버를 찾아 실행한다.
    👉 JSP: InternalResourceViewResolver가 자등 등록되어 사용
  7. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물이 이름으로 바꾸고 렌더링 역할을 담당하는 뷰 객체 반환.
    👉 JSP: InternalResourceView(JstlView)를 반환하는데, 내부에는 forward() 가 있다.
  8. 뷰 렌더링: 뷰를 통해서 뷰를 렌더링한다.
profile
한 걸음씩 꾸준히

0개의 댓글