김영한 강사님의 강의를 들으며 웹개발에 대해 공부하던 중에 계속 강의만 들으면서 클론코딩을 하면 정작 내 실력은 늘지 않겠다 싶어서(내가 무엇을 제대로 이해했는지 알지를 못하니...) 처음으로 게시판 프로젝트를 만들어보기로했다. 프론트엔드쪽은 실행되는 것만 확인할 수 있도록 뼈대만 만들었다.(내가 원하는건 백엔드 공부니까)
솔직히 이렇게 기록을 남기는게 처음이라 조금 어색하긴한데.... 이건 게시판 프로젝트를 만들고 차차 정리해보려고 한다.
우선 프로젝트를 만들기 전에 MVC가 뭔지 정리해보자.
MVC 패턴은 웹 개발 시 Model, View, Controller 이 세가지 영역으로 나눠서 서로의 역할을 나눈 것을 말한다.
웹 어플리케이션 개발에선 보통 이 패턴을 사용한다고 한다.
컨트롤러 측에서는 HTTP 요청을 받아 파라미터를 검증하고 비즈니스 로직을 실행하여 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 컨트롤러에서 비즈니스 로직을 만들수도 있지만 그렇게 되면 컨트롤러에서 너무 많은 역할을 담당하기 때문에 일반적으로 비즈니스 로직은 서비스 계층을 별도로 만들어서 처리한다.
모델 측에서는 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주기 때문에 뷰는 다른 데이터의 접근을 몰라도 되고 화면을 렌더링 하는 일에 집중할 수 있다.
뷰 측에서는 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다.
다만 이러한 MVC패턴은 기능이 복잡해질 수록 컨트롤러에서 공통적으로 처리해야하는 부분이 점점 더 많이 증가한다. 따라서 공통 기능을 메소드로 만들어도 해당 메소드를 항상 호출해야하고, 이 호출조차 중복이 되어 공통 처리가 어려워진다는 문제가 생긴다. 이를 해결하기 위해선 컨트롤러 호출 전에 먼저 공통 기능을 처리해야 하는데 이러한 문제를 해결할 수 있게 해준 것이 프론트 컨트롤러(Front Controller) 패턴이며 이 패턴이 Spring MVC의 핵심이다.
※FrontController 패턴
- 해당 패턴 내의 서블릿 하나로 클라이언트의 요청을 받는다.
- 받은 요청을 가지고 FrontController가 해당 요청에 맞는 컨트롤러를 찾아서 호출한다.
- 이러한 기능으로 컨트롤러의 코드를 늘릴 필요 없이 공통적으로 처리가 가능해진다.
- FrontController를 제외한 나머지 컨트롤러는 서블릿을 사용할 필요가 없어진다.
- Spring MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있어 공통 처리를 가능하게 해준다.
'Spring MVC' 카테고리의 다른 글
Spring MVC)게시판 만들기 - Controller 생성 (1) | 2025.02.07 |
---|---|
Spring MVC)게시판 만들기 - Service 생성 (0) | 2025.02.06 |
Spring MVC)게시판 만들기 - Repository 생성 (0) | 2025.02.05 |
Spring MVC)게시판 만들기 - Entity 생성 (0) | 2025.02.05 |
Spring MVC)게시판 만들기 - 프로젝트 환경 설정 (0) | 2025.02.04 |