1. createForm
@GetMapping(value = "/order")
public String createForm(Model model) {
List<Member> members = memberService.findMembers();
List<Item> items = itemService.findItems();
model.addAttribute("members", members);
model.addAttribute("items", items);
return "order/orderForm";
}
주문 폼 이동
메인 화면에서 상품 주문을 선택하면 /order를 GET 방식으로 호출한다
주문에는 상품정보와 회원정보를 가져와야하므로 members,items 인스턴스를 생성한다
그다음 model 객체를 통해 해당 인스턴스들을 view에 넘긴다
2. order()
@PostMapping(value = "/order")
public String order(
@RequestParam("memberId") Long memberId,
@RequestParam("itemId") Long itemId,
@RequestParam("count") int count) {
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}
}
주문할 회원과 상품 그리고 수량을 선택해서 submit 버튼을 누르면 /order URL을 POST방식으로 호출
컨트롤러의 order() 메서드를 실행
이 메서드는 memberId(고객 식별자), itemId(주문할 상품 식별자), count(수량) 정보를 받아서 주문 서비스에 주문을 요청
주문이 끝나면 상품 주문 내역이 있는 /orders URL로 리다이렉트
공부
1. @RequestParam: http://127.0.0.1?index=1&page=2. 와 같은 형식의 URL에서 사용하는 어노테이션이다
URL 뒤에 붙은 파라미터 값을 가져올 때 사용한다
/memberId=x & itemId=xx & count=xxx에서 x,xx,xxx의 값을 가져오는 것이라 이해하면 되려나?
2. redirect: 해당 URL로 다시 이동하게 해준다
3. orderList()
@GetMapping(value = "/orders")
public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) {
List<Order> orders = orderService.findOrders(orderSearch);
model.addAttribute("orders", orders);
return "order/orderList";
}
}
4. cancelOrder()
@PostMapping(value = "/orders/{orderId}/cancel")
public String cancelOrder(@PathVariable("orderId") Long orderId) {
orderService.cancelOrder(orderId);
return "redirect:/orders";
}
}
'JPA > JPA + SpringBoot' 카테고리의 다른 글
[JPA+SpringBoot] API 성능 최적화 (엔티티->DTO, JPA에서 바로 DTO 조회) (0) | 2022.03.18 |
---|---|
[JPA+SpringBoot] 엔티티를 API에 노출했을 때 발생할 수 있는 문제점과 해결방법 (0) | 2022.03.18 |
[JPA +SpringBoot] 변경감지와 병합(dirty checking, merge) (0) | 2022.03.07 |
[JPA+SpringBoot] 3/2 공부 내용 기록(웹 구현, ItemController) (0) | 2022.03.07 |
[JPA+SpringBoot] 3/2 공부 내용 기록(웹 구현, MemberController) (0) | 2022.03.07 |