Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
-
[김영한 스프링] 34. 스프링 MVC 웹 페이지 만들기 - PRG Post/Redirect/GetSpring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 24. 03:51
PRG Post/Redirect/Get 사실 지금까지 진행한 상품 등록 처리 컨트롤러는 심각한 문제가 있다. (addItemV1 ~ addItemV4) 상품 등록을 완료하고 웹 브라우저의 새로고침 버튼을 클릭해 보자. 상품이 계속해서 중복 등록되는 것을 확인할 수 있다. testC 상품 등록 상품 등록 후 새로고침 하면 중복으로 데이터 생성 됨 전체 흐름 POST 등록 후 새로 고침 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다. 상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST /add + 상품 데이터를 서버로 전송한다. 이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게 된다. 그래서 내용은 같고, ID만..
-
[김영한 스프링] 33. 스프링 MVC 웹 페이지 만들기 - 상품 등록 처리 & 상품 수정Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 24. 03:02
상품 등록 처리 - @ModelAttribut 상품 등록 폼은 다음 방식으로 서버에 데이터를 전달한다. POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 itemName=itemA&price=10000&quantity=10 예) 회원 가입, 상품 주문, HTML Form 사용 요청 파라미터 형식을 처리해야 하므로 @RequestParam을 사용하자 상품 등록 처리 - @RequestParam addItemV1 - BasicItemController에 추가 @PostMapping("/add") public String save(@RequestParam String itemName, @RequestP..
-
[김영한 스프링] 32. 스프링 MVC 웹 페이지 만들기 - 상품 상세 & 상품 등록 폼Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 24. 01:36
상품 상세 BasicItemController에 추가 @GetMapping("/{itemId}") public String items(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item"; } PathVariable로 넘어온 상품ID로 상품을 조회하고, 모델에 담아둔다. 그리고 뷰 템플릿을 호출한다. 상품 상세 뷰 resources/static/html/item.html을 resources/templates/basic로 복붙 타임리프 사용 선언, 속성 변경 th:href="@{/css/bootstrap.min..
-
[김영한 스프링] 31. 스프링 MVC 웹 페이지 만들기 - 상품 목록 타임리프Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 23. 23:06
상품 목록 - 타임리프 BasicItemController main/java/hello/itemservice/web/item/basic/BasicItemController 생성 package hello.itemservice.web.item.basic; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind..
-
[김영한 스프링] 30. 스프링 MVC 웹 페이지 만들기 - 상품 서비스 HTMLSpring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 20. 03:12
상품 서비스 HTML 부트스트랩 참고로 HTML을 편리하게 개발하기 위해 부트스트랩 사용했다. 먼저 필요한 부트스트랩 파일을 설치하자 부트스트랩을 다운로드 받고 압출을 풀자. 이동 : https://getbootstrap.com/docs/5.0/getting-started/download/ Compiled CSS and JS 항목을 다운로드하자. 압축을 출고 bootstrap.min.css를 복사해서 다음 폴더에 추가하자 resources/static/css/bootstrap.min.css 참고 부트스트랩(Bootstrap)은 웹사이트를 쉽게 만들 수 있게 도와주는 HTML, CSS, JS 프레임워크이다. 하나의 CSS로 휴대폰, 태블릿, 데스크탑까지 다양한 기기에서 작동한다. 다양한 기능을 제공하여 사..
-
[김영한 스프링] 29. 스프링 MVC 웹 페이지 만들기 - 상품 도메인 개발Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 19. 22:26
상품 도메인 개발 Item - 상품 객체 package hello.itemservice.domain.item; import lombok.Data; @Data public class Item { private Long Id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } } main/java/hello/itemservice/domain/item/I..
-
[김영한 스프링] 28. 스프링 MVC 웹 페이지 만들기 - 프로젝트 생성 & 세팅 & 요구사항 분석Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 19. 00:09
프로젝트 생성 프로젝트 만들기 https://start.spring.io 프로젝트 선택 Project : Gradle-Groovy Language : Java Spring Boot : SNAPSHOT이 아닌 버전에서 2.x Project Metadata Group : hello Artifact : item-service Name : item-service Package name : hello.itemservice Packaging : Jar (주의!) Java : 11 Dependencies : Spring Web, Thymeleaf, Lombok 프로젝트 열기 build.gradle 선택 -> 프로젝트 열기 설정 설정 -> 어노테이션 프로세서 -> 어노테이션 처리 활성화 체크 설정 -> 파일 인코딩 -..
-
[김영한 스프링] 27. 스프링 MVC 기본 기능 - HTTP 메시지 컨버터 & 요청 매핑 헨들러 어뎁터 구조Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 18. 00:25
HTTP 메시지 컨버터 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리하다. @ResponseBody 사용 원리 @ResponseBody를 사용 HTTP의 BODY에 문자 내용을 직접 반환 viewResolver 대신에 HttpMessageConverter가 동작 기본 문자처리 : StringHttpMessageConverter 기본 객체처리 : MappingJackson2HttpMessageConverter byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음 스프링 MVC는 다음의 경우에 HTTP 메시지 컨버터를 적용한다. HTT..