- 컨트롤러 로직 추가
/** 상품 등록 폼*/
@GetMapping("/add")
public String addForm() {
return "basic/addForm"; //뷰 템플릿 호출 (내부 호출)
}
- 단순히 뷰 템플릿만 호출
- 뷰 템플릿(templates)
- /resources/templates/basic/addForm.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<link href="../css/bootstrap.min.css"
th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
<style>
.container {
max-width: 560px;
}
</style>
</head>
<body>
<div class="container">
<div class="py-5 text-center">
<h2>상품 등록 폼</h2>
</div>
<h4 class="mb-3">상품 입력</h4>
<form action="item.html" th:action method="post">
<div>
<label for="itemName">상품명</label>
<input type="text" id="itemName" name="itemName" class="formcontrol" placeholder="이름을 입력하세요">
</div>
<div>
<label for="price">가격</label>
<input type="text" id="price" name="price" class="form-control"placeholder="가격을 입력하세요">
</div>
<div>
<label for="quantity">수량</label>
<input type="text" id="quantity" name="quantity" class="formcontrol" placeholder="수량을 입력하세요">
</div>
<hr class="my-4">
<div class="row">
<div class="col">
<button class="w-100 btn btn-primary btn-lg" type="submit">상품등록</button>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg"
onclick="location.href='items.html'"
th:onclick="|location.href='@{/basic/items}'|"
type="button">취소</button>
</div>
</div>
</form>
</div> <!-- /container -->
</body>
</html>
- 속성 변경 - th:action
- HTML form에서 action에 값이 없으면? 현재 URL에 데이터를 전송한다.
- 상품 등록 폼의 URL과 실제 상품 등록을 처리하는 URL을 똑같이 맞추고 HTTP 메서드로 두 기능을 구분 (이렇게 하면 하나의 URL로 등록 폼과, 등록 처리를 깔끔하게 처리할 수 있다.)
- 상품 등록 폼: GET /basic/items/add
- 상품 등록 처리: POST /basic/items/add
- 취소시 상품 목록으로 이동
th:onclick="|location.href='@{/basic/items}'|"
- 상품 등록 폼은 POST 방식으로 서버에 데이터를 전달한다.
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파리미터 형식으로 전달 itemName=itemA&price=10000&quantity=10
[스프링 MVC 10] 서블릿: HTTP 요청 데이터 (*중요) (tistory.com)
728x90
반응형
'Spring Tutorial' 카테고리의 다른 글
[스프링MVC -상품 관리 웹 개발 6] 상품 수정 (0) | 2023.09.01 |
---|---|
[스프링MVC -상품 관리 웹 개발 5] 상품 등록 처리 - @ModelAttribute (0) | 2023.08.31 |
[스프링MVC -상품 관리 웹 개발 3] 상품 상세 (0) | 2023.08.30 |
[스프링MVC -상품 관리 웹 개발 2] 상품 목록 - 타임리프 (0) | 2023.08.29 |
[스프링MVC 기본 기능 11] 요청 매핑 핸들러 어댑터 구조 (1) | 2023.08.27 |