Spring
스프링 MVC 1 - RedirectAttributes
스프링 MVC 1 - RedirectAttributes
2022.08.01RedirectAttributes 상품을 저장하고 상품 상세 화면으로 리다이렉트 한 것 까지는 좋았다. 그런데 고객 입장에서 저장이 잘 된 것인지 안 된 것인지 확신이 들지 않는다. 그래서 저장이 잘 되었으면 상품 상세 화면에 "저장되었습니다"라는 메시지를 보여달라는 요구사항이 왔다. 간단하게 해결해보자. BasicItemController에 추가 리다이렉트 할 때 간단히 status=true를 추가해보자. 그리고 뷰 템플릿에서 이 값이 있으면, 저장되었습니다. 라는 메시지를 출력해보자. 실행해보면 다음과 같은 리다이렉트 결과가 나온다. http://localhost:8080/basic/items/4?status=true RedirectAttributes RedirectAttributes를 사용하면 UR..
스프링 MVC 1 - PRG Post/Redirect/Get
스프링 MVC 1 - PRG Post/Redirect/Get
2022.08.01PRG Post/Redirect/Get 사실 지금까지 진행한 상품 등록 처리 컨트롤러는 심각한 문제가 있다. (addItemV1 ~ addItemV4) 상품 등록을 완료하고 웹 브라우저의 새로고침 버튼을 클릭해보자. 상품이 계속해서 중복 등록되는 것을 확인할 수 있다. 전체 흐름 그 이유는 다음 그림을 통해서 확인할 수 있다. POST 등록 후 새로 고침 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다. 상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST/ add + 상품 데이터를 서버로 전송한다. 이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게 된다. 그래서 내용은 같고, ID만 다른 상품 데이터가 계속 쌓..
스프링 MVC 1 - 상품 수정
스프링 MVC 1 - 상품 수정
2022.08.01상품 수정 상품 수정 폼 컨트롤러 BasicController에 추가 수정에 필요한 정보를 조회하고, 수정용 폼 뷰를 호출한다. 상품 수정 폼 뷰 정적 HTML을 뷰 템플릿(templates) 영역으로 복사하고 다음과 같이 수정하자. /resources/static/editForm.html → 복사 → /resources/templates/basic/editForm.html /resources/templates/basic/editForm.html 상품 수정 폼은 상품 등록과 유사하고, 특별한 내용이 없다. 상품 수정 개발 상품 수정은 상품 등록과 전체 프로세스가 유사하다. GET /items/{itemId}/edit: 상품 수정 폼 POST /items/{itemId}/edit: 상품 수정 처리 리다이렉..
스프링 MVC 1 - 상품 등록 처리 - @ModelAttribute
스프링 MVC 1 - 상품 등록 처리 - @ModelAttribute
2022.07.29상품 등록 처리 - @ModelAttribute 이제 상품 등록 폼에서 전달된 데이터로 실제 상품을 등록 처리해보자. 상품 등록 폼은 다음 방식으로 서버에 데이터를 전달한다. POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 itemName=itemA&price=10000&quantity=10 예) 회원 가입, 상품 주문, HTML Form 사용 요청 파라미터 형식을 처리해야 하므로 @RequestParam을 사용하자 상품 등록 처리 - @RequestParam addItemV1 - BasicItemController에 추가 먼저 @RequestParam String itemName : itemN..
스프링 MVC 1 - 상품 등록 폼
스프링 MVC 1 - 상품 등록 폼
2022.07.29상품 등록 폼 상품 등록 폼 BasicItemController에 추가 상품 등록 폼은 단순히 뷰 템플릿만 호출한다. 상품 등록 폼 뷰 정적 HTML을 뷰 템플릿(templates)영역으로 복사하고 다음과 같이 수정하자. /resources/static/addForm.html → 복사 → /resources/templates/basic/addForm.html /resources/templates/basic/addForm.html 속성 변경 - th:action th:action HTML form에서 action에 값이 없으면 현재 URL에 데이터를 전송한다. 상품 등록 폼의 URL과 실제 상품 등록을 처리하는 URL을 똑같이 맞추고 HTTP 메서드로 두 기능을 구분한다. 상품 등록 폼: GET /basi..
스프링 MVC 1 - 상품 상세
스프링 MVC 1 - 상품 상세
2022.07.28상품 상세 상품 상세 컨트롤러와 뷰를 개발하자. BasicItemController에 추가 PathVariable로 넘어온 상품ID로 상품을 조회하고, 모델에 담아둔다. 그리고 뷰 템플릿을 호출한다. 상품 상세 뷰 정적 HTML을 뷰 템플릿(templates) 영역으로 복사하고 다음과 같이 수정하자. /resources/static/item.html → 복사 → /resources/templates/basic/item.html /resources/templates/basic/item.html 속성 변경 - th:value th:value="${item.id}" 모델에 있는 item 정보를 획득하고 프로퍼티 접근법으로 출력한다. (item.getId()) value 속성을 th:value 속성으로 변경한다..