Spring MVC와 웹 애플리케이션의 작동 원리
웹 애플리케이션의 기본 작동 방식은 브라우저가 서버에 요청을 보내고, 서버가 이에 대한 응답을 반환하는 구조입니다. 이번 글에서는 Spring Boot와 Spring MVC를 통해 웹 애플리케이션이 어떻게 작동하는지를 살펴보겠습니다.
초기 Java 웹 애플리케이션 개발
Java로 웹 애플리케이션을 개발하기 시작했을 때, 모든 로직이 JSP 파일 내에 포함되어 있었습니다. 이 방식은 흐름 로직, 뷰 로직, 데이터베이스 로직이 모두 JSP에 혼합되어 있어 유지보수가 어려웠습니다. 이러한 구조를 모델 1 아키텍처라고 부릅니다.
모델 2 아키텍처로의 전환
이후 모델 2 아키텍처로 발전하면서 로직이 명확하게 분리되었습니다. 뷰 로직은 뷰로 가고, 데이터베이스 같이 데이터를 받는 방법에 관한 것은 모델로 간다. 하여 모델이 데이터를 제공하고(모델이 뷰를 생성하는 데 사용되는 데이터), 뷰는 사용자에게 정보를 표시하며, 컨트롤러 또는 서블릿이 전체 흐름을 관리합니다. 이러한 구조는 유지보수를 용이하게 했지만, 여러 컨트롤러에 걸쳐 공통 기능을 구현하는 데 어려움이 있었습니다.
프론트 컨트롤러 패턴
이 문제를 해결하기 위해 프론트 컨트롤러 패턴이 등장했습니다. 이 패턴에서는 모든 요청이 단일 컨트롤러(프론트 컨트롤러)를 통해 처리되어 공통 기능(예: 인증)을 중앙에서 관리할 수 있게 되었습니다. Spring MVC의 디스패처 서블릿이 바로 이 역할을 수행합니다.
1. 프론트 컨트롤러가 요청을 받음
2. 적절한 컨트롤러 메서드 식별, 실행
3. 컨트롤러 메서드가 모델에 데이터를 채우고, 모델과 뷰 이름을 반환
4. 프론트 컨트롤러는 뷰 리졸버를 통해 정확한 뷰이름을 알아내고, 이름에 대응되는 적절한 뷰를 찾아냄
5. 이후 뷰를 렌더링하고 실행디스패처 서블릿의 작동 원리
디스패처 서블릿은 모델 2 프론트 컨트롤러 패턴의 Spring MVC 구현물로, 모든 요청을 수신하고, 요청 URL에 따라 적절한 컨트롤러 메서드를 식별합니다. 그 후, 해당 메서드를 실행하고 모델과 뷰 이름을 반환합니다. 예를 들어, 사용자가 /login URL에 접근하면, 디스패처 서블릿은 LoginController의 gotoLoginPage() 메서드를 호출합니다. 이 메서드는 필요한 데이터를 모델에 채우고, 뷰 이름인 login을 반환합니다.
이제 디스패처 서블릿은 뷰 리졸버를 통해 login 뷰에 해당하는 JSP 파일을 찾고, 이를 렌더링하여 최종적으로 브라우저에 응답을 반환합니다.
결론
Spring MVC를 사용하면 웹 애플리케이션의 흐름이 체계적으로 관리되며, 각 구성 요소 간의 역할이 명확히 분리됩니다. 이번 글에서는 Spring MVC의 작동 원리를 간략히 살펴보았으며, 이러한 배경 지식이 향후 더 복잡한 웹 애플리케이션 개발에 도움이 될 것입니다.
'강의 > Java Spring Boot' 카테고리의 다른 글
| todolist 만들기 (0) | 2025.01.26 |
|---|---|
| 로그인 양식 만들기 (0) | 2025.01.26 |
| JSP 시작하기 (0) | 2025.01.26 |
| Spring Boot 시작하기 (1) | 2025.01.26 |
| Spring과 Spring Boot로 JPA와 Hibernate 시작하기 (0) | 2024.07.30 |