[MVC-6] CSR 환경에서 @RequestBody만 쓸까? (feat. 파일 업로드와 @ModelAttribute)
·
Spring/MVC
0. 궁금증지난 [MVC-5] 포스팅에서는 스프링 MVC의 기본 기능과 애노테이션 기반 컨트롤러에 대해 알아보았다. 요즘은 React나 Vue.js 같은 프레임워크를 사용하는 CSR(Client-Side Rendering) 환경이 대세다. 이런 환경에서는 프론트엔드와 백엔드가 JSON 데이터로 통신하는 것이 표준(Standard)처럼 자리 잡았다.JSON 데이터 전송 → @RequestBody 사용그렇다면, 과거 JSP나 타임리프 시절에 폼(Form) 데이터를 받던 @ModelAttribute는 이제 CSR 환경에서 쓸모가 없을까? 결론부터 말하면 "아니오"다. JSON만으로는 해결하기 어려운 상황들이 분명 존재하기 때문이다. 이번 글에서는 CSR 환경에서도 @ModelAttribute가 필수적인 상황(..
[MVC-5] 스프링 MVC 기본 기능
·
Spring/MVC
1. 프로젝트 생성 및 구조1.1 스프링 부트 프로젝트 생성스프링 MVC를 학습하기 위한 프로젝트는 스프링 부트 스타터 사이트(https://start.spring.io)를 통해 생성한다. 다음과 같은 설정이 권장된다:1.1.1 프로젝트 기본 설정Project: Gradle ProjectLanguage: JavaSpring Boot: 2.4.x 이상Project Metadata:Group: helloArtifact: springmvcName: springmvcPackage name: hello.springmvcPackaging: Jar (주의)Java: 111.1.2 의존성(Dependencies)Spring WebThymeleafLombok1.1.3 Packaging 선택: Jar vs WarJar 선..
[MVC-4] 스프링 MVC 시작하기: 애노테이션 기반 컨트롤러
·
Spring/MVC
1. 스프링 MVC의 시작1.1 @RequestMapping 애노테이션의 등장 배경 스프링 MVC의 진정한 강점은 애노테이션 기반 컨트롤러의 도입으로 나타났다. 초기 자바 언어에는 애노테이션이 존재하지 않았으며, 스프링 또한 처음부터 이러한 유연한 컨트롤러를 제공하지 않았다. 역사적으로 스프링 프레임워크의 MVC 부분은 상대적으로 약점으로 지적받아 왔고, 많은 개발자들이 Struts와 같은 다른 웹 프레임워크를 MVC 레이어로 사용하기도 했다. 그러나 @RequestMapping 애노테이션 기반 컨트롤러의 등장은 게임 체인저 역할을 했다. 이 기술은 스프링이 웹 MVC 분야에서 압도적인 우위를 차지하는 계기가 되었으며, 오늘날 스프링 MVC는 자바 웹 개발의 사실상 표준(de facto standard..
[MVC-3] Spring MVC 구조 이해
·
Spring/MVC
1. 스프링 MVC 전체 구조1.1 직접 만든 MVC 프레임워크와 스프링 MVC의 비교 지난 시간에 단계적으로 진화시켜 만든 MVC 프레임워크 v5 버전과 스프링 MVC는 구조적으로 매우 유사하다. 이는 스프링 MVC가 웹 애플리케이션 개발에서 검증된 디자인 패턴과 아키텍처를 기반으로 구축되었기 때문이다. 직접 만든 MVC 프레임워크 스프링 MVC 컴포넌트 역할 FrontControllerServletV5DispatcherServlet프론트 컨트롤러 역할handlerMappingMapHandlerMapping요청 URL을 핸들러(컨트롤러)로 매핑MyHandlerAdapterHandlerAdapter다양한 형태의 컨트롤러를 실행할 수 있는 어댑터ModelViewModelAndView모델 데이터와 뷰 정..
[MVC-2] 직접 만드는 MVC 프레임워크
·
Spring/MVC
1. 프론트 컨트롤러(Front Controller) 패턴 소개 과거의 방식은 모든 서블릿이 각자의 로직을 수행하며 공통 처리를 중복으로 수행해야 했다. 프론트 컨트롤러 패턴은 '입구를 하나로' 모아 공통 로직을 통합 관리하는 것이 핵심이다.특징: 서블릿 하나로 모든 클라이언트 요청을 받고, 요청에 맞는 컨트롤러를 찾아 호출한다.스프링과의 관계: 스프링 웹 MVC의 DispatcherServlet이 바로 이 프론트 컨트롤러 패턴으로 구현되어 있다.2. v1: 프론트 컨트롤러 도입 (기본 구조 구축)기존 서블릿 코드를 최대한 유지하면서 프론트 컨트롤러만 도입한 단계이다.ControllerV1 인터페이스public interface ControllerV1 { void process(HttpServlet..
[MVC-1] 서블릿에서 JSP까지: 자바 백엔드 웹 기술의 발전과 한계
·
Spring/MVC
자바 백엔드 기술의 역사는 '비즈니스 로직'과 '뷰(화면) 렌더링'을 어떻게 하면 깔끔하게 분리할 수 있을지에 대한 고민의 역사와 궤를 같이한다. 모든 웹 기술의 뿌리인 서블릿부터 현대적인 MVC 패턴에 이르기까지의 과정과 그 한계를 정리한다.1. 모든 웹 기술의 뿌리, 서블릿(Servlet) 자바에서 동적인 웹 페이지를 생성하기 위해 탄생한 표준 기술이 서블릿이다. 서블릿은 HTTP 요청 메시지를 파싱하여 개발자가 비즈니스 로직에만 집중할 수 있도록 HttpServletRequest와 HttpServletResponse 객체를 제공한다.1.1. 서블릿 방식의 불편함: response.getWriter().write()서블릿만으로 웹 애플리케이션을 개발하면 자바 코드 안에 HTML이 갇혀버리는 현상이 발..