스프링 MVC 1- 정리(스프링 MVC - 웹 페이지 만들기)
반응형
정리(스프링 MVC - 웹 페이지 만들기)
- 프로젝트 생성
- 요구사항 분석
- 요구사항은 굉장히 단순했다.
- 도메인 모델 4개
- 기능 4개
- 상품 도메인 개발
- 상품 서비스 HTML
- 상품 목록 - 타임리프
- 상품 목록에 타임리프를 적용했다.
- <html xmlns: th="http://www.thymeleaf.org"> 이렇게 타입리프를 선언했고,
- 타임리프의 특징은 태그를 유지한 상태로 속성만 바꾸는 역할을 하는 것이다.
- 타임 리프 핵심은 th:xxx 가 붙은 부분은 서버사이드에서 랜더링되고, 기존 것을 대체한다.
- 그리고 HTML파일로 직접 열었을 때, 'th:xxx'가 있어도 웹 브라우저는 th 속성을 알지 못하므로 무시한다.
- 이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿이라 한다.
- 상품 상세
- 상품 등록 폼
- 상품 등록 폼: GET /basic/items/add
- 상품 등록 처리: POST /basic/items/add
- 이렇게 하면 하나의 url로 http메서드를 통해서 등록폼과 등록 처리를 깔끔하게 할 수 있었다.
- th:action 값을 비워두면 GET과 POST의 URL을 맞출 수 있다.
- 상품 등록 처리 - @ModelAttribute
- 2가지 작업을 해준다.
- @ModelAttribute는 요청파라미터를 처리해주고,
- @ModelAttribute는 Model에 추가해준다.
- 상품 수정
- HTML Form 전송은 PUT, PATCH를 지원하지 않는다.
- PRG Post/Redirect/Get
- 상품을 등록하고, 새로고침을 누르면 마지막 요청 URL이 POST/add 여서 상품이 중복 등록되는 문제가 있었다.
- 이 문제를 해결하기 위해, POST/add 를 한 뒤, 뷰 템플릿을 보여주는 것이 아니라, 화면을 Redirect하면, 마지막에 GET /items/{id} 요청이 나가게 된다. 따라서 새로고침을 해도 GET /items/{id}가 호출되도록 했다. (PRG 패턴)
- RedirectAttributes
- pathVariable처럼 경로상에 있는 것은 치환, 경로상에 없는 것은 쿼리 파라미터로 처리된다.
- 그리고 뷰 템플릿 메시지를 추가했는데, th:if를 이용해서 ${param.status}로 타임리프에서 쿼리 파라미터를 편리하게 조회하는 기능을 사용해서 추가했다.
- 정리
반응형
'Spring' 카테고리의 다른 글
스프링 MVC 2 - 타임리프 소개 (0) | 2022.08.03 |
---|---|
스프링 MVC 2 - 프로젝트 생성 (0) | 2022.08.02 |
스프링 MVC 1 - RedirectAttributes (0) | 2022.08.01 |
스프링 MVC 1 - PRG Post/Redirect/Get (0) | 2022.08.01 |
스프링 MVC 1 - 상품 수정 (0) | 2022.08.01 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 2 - 타임리프 소개
스프링 MVC 2 - 타임리프 소개
2022.08.03 -
스프링 MVC 2 - 프로젝트 생성
스프링 MVC 2 - 프로젝트 생성
2022.08.02 -
스프링 MVC 1 - RedirectAttributes
스프링 MVC 1 - RedirectAttributes
2022.08.01 -
스프링 MVC 1 - PRG Post/Redirect/Get
스프링 MVC 1 - PRG Post/Redirect/Get
2022.08.01