Spring 47

[Spring] 스프링 MVC 1편 완강!!!!!!! - 전체 정리

스프링 MVC 1편 강의는 단순한 기술 학습을 넘어, 웹 애플리케이션이 동작하는 근본 원리를 이해하고 실제로 구현해보는 과정이었다.이번 글에서는 지금까지 학습한 전체 내용을 하나의 흐름으로 정리한다.1. 웹 애플리케이션의 기본 구조웹 서버 vs WAS웹 서버: 정적 리소스 제공 (HTML, CSS, JS)WAS: 서블릿 기반으로 동적 처리서블릿과 JSP서블릿: HTTP 요청과 응답을 직접 다루는 저수준 APIJSP: HTML과 자바 코드를 결합해 뷰를 좀 더 쉽게 렌더링MVC 패턴 등장역할 분리: Controller(요청 처리), Model(데이터), View(화면 렌더링)코드 중복과 유지보수 문제를 구조적으로 해결2. MVC 프레임워크 직접 구현하기Front Controller 패턴여러 컨트롤러를 하나..

Spring 2025.08.18

[Spring] MVC 22편 - 웹 페이지 만들기 (4, 최종 정리)

지난 편까지 우리는 상품 관리 웹 애플리케이션을 스프링 MVC와 타임리프를 사용해 직접 만들어 보았다.이번 편에서는 지금까지 구현한 기능을 전체적으로 정리하고, 타임리프 문법 요약 시트까지 정리해본다.1. 전체 기능 흐름요구사항상품 목록상품 상세상품 등록상품 수정구현 순서도메인 개발: Item, ItemRepository컨트롤러 작성: BasicItemController상품 목록 조회상품 상세 조회상품 등록 (폼, 처리)상품 수정 (폼, 처리)뷰 템플릿 작성: Thymeleaf 기반 HTML (목록, 상세, 등록, 수정)중복 등록 문제 해결: PRG(Post/Redirect/Get) 패턴상태 메시지 처리: RedirectAttributes 사용2. 주요 코드 구조BasicItemController@Con..

Spring 2025.08.18

[Spring] MVC 21편 - 웹 페이지 만들기 (3)

지난 편에서는 상품 목록, 상세, 등록까지 구현했다.이번에는 상품 수정 기능을 추가하고, 등록 후 새로고침 시 발생하는 문제를 어떻게 해결하는지도 살펴본다.1. 상품 수정 폼컨트롤러@GetMapping("/{itemId}/edit")public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/editForm";} @PathVariable로 전달된 상품 ID를 이용해 상품을 조회모델에 담아 editForm.html에 전달뷰 템플릿 (editForm.html) ..

Spring 2025.08.18

[Spring] MVC 20편 - 웹 페이지 만들기 (2)

지난 편에서는 프로젝트 기본 세팅과 상품 도메인, 저장소까지 만들었다.이번에는 본격적으로 타임리프 뷰 템플릿을 사용해서 웹 페이지를 동적으로 구현해보자.1. 상품 목록 - 타임리프 적용컨트롤러@Controller@RequestMapping("/basic/items")@RequiredArgsConstructorpublic class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); model.addAttribute("items", items); ..

Spring 2025.08.18

[Spring] MVC 19편 - 웹 페이지 만들기 (1)

이번 편부터는 실제로 상품 관리 웹 애플리케이션을 만들어보면서 스프링 MVC와 타임리프를 활용하는 과정을 다룬다.앞에서 배운 MVC의 핵심 개념들을 이제는 실무 예제에 적용해보는 단계라고 보면 된다.1. 프로젝트 생성먼저 start.spring.io를 이용해 프로젝트를 생성한다.Project: Gradle ProjectLanguage: JavaSpring Boot: 3.x Group: helloArtifact: item-servicePackage name: hello.itemservicePackaging: JarJava: 17Dependencies: Spring Web, Thymeleaf, Lombok애플리케이션을 실행하면 http://localhost:8080 에서 Whitelabel Error Pag..

Spring 2025.08.18

[Spring] MVC 18편 - HTTP 응답과 메시지 컨버터

이번 편에서는 스프링 MVC에서 응답을 처리하는 다양한 방식과 핵심 요소인 HttpMessageConverter, 그리고 이를 활용하는 ArgumentResolver / ReturnValueHandler의 동작 원리를 정리한다.이전까지는 요청(Request)을 중심으로 살펴봤다면, 이제는 응답(Response)에 집중해보자.1. 요구사항클라이언트에 응답을 내려줄 때 선택지는 다양하다.정적 리소스(html, css, js)뷰 템플릿(Thymeleaf, JSP 등)HTTP API(JSON 등 데이터 포맷)각각의 응답 방식에 따라 스프링 MVC가 어떤 경로로 동작하는지 이해하는 것이 필요하다.2. 문제점단순히 문자열을 반환하면 뷰를 렌더링할지, HTTP 바디에 데이터를 넣을지 헷갈릴 수 있다.JSON, XML..

Spring 2025.08.18

[Spring] MVC 17편 - Spring MVC 어노테이션 동작 요약 시트

1. 컨트롤러 유형어노테이션설명반환 처리 방식@Controller뷰 렌더링 컨트롤러반환값 String → View 이름@RestControllerAPI 전용 컨트롤러@ResponseBody 포함, 반환값 → HTTP Body2. 매핑 관련 어노테이션어노테이션용도주요 속성특징/주의사항@RequestMappingURL + HTTP 메서드 매핑value, method, params, headers, consumes, produces가장 기본, 다중 속성 지원@GetMapping 등HTTP 메서드별 축약형value, params, headers 등내부적으로 @RequestMapping 사용@PathVariable경로 변수 바인딩value, required이름 생략 시 -parameters 옵션 필요(3.2+) ..

Spring 2025.08.14

[Spring] MVC 16편 - MVC 기본 기능 총정리편 + 흐름도

이번 글은 Spring MVC 기본 기능을 한 번에 복습한다.이 문서 하나만 보면, @RequestMapping, @RequestParam, @ModelAttribute, @RequestBody 등 MVC의 핵심 어노테이션을 개념부터 원리, 주의사항까지 완벽히 이해할 수 있다.1. @Controller vs @RestController1) 개념@Controller반환값이 String이면 뷰 이름으로 인식 → 뷰 리졸버(ViewResolver)가 템플릿 렌더링API 응답을 하려면 @ResponseBody를 추가해야 함@RestController@Controller + @ResponseBody 조합반환값을 HTTP 응답 바디에 직접 씀 (뷰 렌더링 X)2) 동작원리@RestController는 Handler..

Spring 2025.08.14

[Spring] MVC 15편 - HTTP 메시지 컨버터와 요청 처리 구조

이번 편에서는 스프링 MVC가 요청과 응답을 변환하는 핵심 엔진인 HttpMessageConverter와,컨트롤러 실행까지 이어지는 핸들러 어댑터 구조를 살펴본다.이 과정을 이해하면, 커스텀 메시지 변환기나 특수한 요청 처리 로직을 구현할 때 막히는 일이 거의 없다.1. HTTP 메시지 컨버터(HttpMessageConverter)란?역할HTTP 요청 바디 → 자바 객체 변환 (@RequestBody)자바 객체 → HTTP 응답 바디 변환 (@ResponseBody)동작 시점요청: 컨트롤러 호출 전, 바디 내용을 읽어 객체로 변환응답: 컨트롤러 반환 후, 객체를 바디에 맞게 변환2. 스프링 부트 기본 등록 컨버터컨버터 클래스지원 타입설명StringHttpMessageConverterString텍스트 변환..

Spring 2025.08.14

[Spring] MVC 14편 - HTTP 메시지 바디와 JSON 처리

이번 편에서는 HTTP 요청 메시지 바디를 읽고 쓰는 방법, JSON 데이터 처리, 그리고 이를 가능하게 하는 HttpMessageConverter의 원리를 다룬다.URL 파라미터나 Form 전송 방식과 달리, 메시지 바디는 구조화된 데이터를 다룰 때 필수적이다.1. HTTP 메시지 바디 읽기 (텍스트)서블릿 방식@PostMapping("/request-body-string-v1")public void requestBodyString(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request...

Spring 2025.08.14