Spring boot 중고거래 쇼핑몰 사이트 만들기 프로젝트 1 (MVC 구조)

전승재·2023년 7월 26일

Spring MVC란

Model - View - Controller의 약자이다.

  • 컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.
  • 모델: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다.
  • : 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 여기서는 HTML을 생성하는 부분을 말한다
  • 서비스 : 비즈니스 로직이 담겨있는 부분
    컨트롤러에 비즈니스 로직을 둘 수도 있지만, 이렇게 되면 컨트롤러가 너무 많은 역할을 담당한다. 그래서 일반적으로 비즈니스 로직은 서비스(Service)라는 계층을 별도로 만들어서 처리한다. 그리고 컨트롤러는 비즈니스 로직이 있는 서비스를 호출하는 역할을 담당한다. 참고로 비즈니스 로직을 변경하면 비즈니스 로직을 호출하는 컨트롤러의 코드도 변경될 수 있다.

MVC패턴 동작 순서

  1. 클라이언트가 서버에 HTTP 요청을 하면 Front Controller인 DispatcherServlet 클래스가 요청을 받는다.
  2. 핸들러를 조회해서 핸들러를 처리할 수 있는 핸들러 어댑터를 찾는다.
  3. 찾은 핸들러 어댑터를 실행한다.
  4. 핸들러 어댑터를 통해 핸들러를 실행한다.
  5. ModelAndView를 반환한다.
  6. ViewResolver를 통해 View 찾기
  7. View 반환
  8. View 랜더링

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

스프링 MVC의 큰 강점은 DispatcherServlet 코드의 변경 없이, 원하는 기능을 변경하거나 확장할 수 있다는 점이다. 지금까지 설명한 대부분을 확장 가능할 수 있게 인터페이스로 제공한다.

다음에는 이제 MVC를 사용하여 패키지를 나누고 개발을 시작하자

Item과 Member의 Controller를 만들고 Domain에 Item, Member 클래스를 넣고 Repository에 인터페이스와 구현체, Service에 비즈니스 로직과 Config를 넣겠다.

0개의 댓글