MVC 패턴
SoC(Separation of Concerns, 관심사의 분리) 원칙에 따른 역할 분담

- Model: 데이터와 비즈니스 로직
- View: 사용자에게 보여지는 화면(UI)
- Controller: 요청을 받아 Model과 View를 연결
Controller
- URL 매핑: 어떤 요청이 들어왔을 때 어떤 메서드를 실행할지 결정
- 로직 호출, 데이터를 Model에 담고 View 이름 반환
- Controller 클래스에는
@Controller 어노테이션을 붙임
Model
- Controller에서 View로 데이터 전달
- Key-Value 형태로 데이터 저장
- 주로 Model, ModelAndView 클래스 사용
View
- 사용자에게 보여지는 화면 담당
- Model의 데이터를 참조하여 HTML 생성, 클라이언트에게 응답
- Controller가 반환한 View 이름을 ViewResolver가 실제 View 파일과 매핑시켜 렌더링
- 백엔드에서 View를 그릴 때
JSP나 Thymeleaf 등의 라이브러리 사용
SSR, CSR
1. SSR(Server Side Rendering)
- 서버에서 완성된 HTML을 통째로 브라우저(클라이언트)에 전달
- 초기 로딩 속도 빠름 (응답 즉시 콘텐츠를 볼 수 있음)
- 검색 엔진 최적화(SEO)에 유리 (모든 내용이 응답에 포함되므로)
Thymeleaf는 SSR 방식
2. CSR(Client Side Rendering)
- 서버에서는 HTML 뼈대와 자바스크립트 파일만 전달
- 브라우저가 자바스크립트 실행, 필요한 데이터를 서버에 다시 요청
- 브라우저가 페이지를 조립하여 화면을 그림
- 초기 로딩 느림
- 로딩 이후에는 앱처럼 부드럽고 빠른 화면 전환 가능
- React, Vue 같은 최신 프론트엔드 프레임워크들은 CSR 방식