Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[WebPage] 상품등록 - @ModelAttribute 본문

인프런/[인프런] 스프링 MVC 1

[WebPage] 상품등록 - @ModelAttribute

Seung__ 2021. 9. 17. 20:03

1. POST - HTML Form


  • content-type: application/x-www-form-urlencoded
  • 메시지 바디에 쿼리 파리미터 형식으로 전달 itemName=itemA&price=10000&quantity=10
  • 예) 회원 가입, 상품 주문, HTML Form 사용
  • Form에서 지정한 이름으로 넘어옴.

 

 

 

2. Controller


 

2.1 @RequestParam


  • 요청 파라미터를 처리하는 방법
  • 변수 명은 Form에서 지정한 name으로 넘어옴.

  • 상품 등록 form에서 
  • 상품 명은 itemName, 가격은 price, 수량은 quantity로 넘어온다.
  • @RequestParam을 활용하여 요청 파라미터 사용이 가능.

 

    @PostMapping("/add")
    public String save(@RequestParam String itemName,
                       @RequestParam int price,
                       @RequestParam Integer quantity,
                       Model model){

        Item item = new Item();
        item.setItemName(itemName);
        item.setPrice(price);
        item.setQuantity(quantity);

        itemRepository.save(item);

        model.addAttribute("item", item);
        return "basic/item";
    }

 

2.2 @ModelAttribute


  • @ModelAttribute가 제공하는 기능
    • 받고자 하는 타입의 객체 생성 및 요청파라미터와 바인딩
    • "name"을 지정하면 해당 alias로 Model에 addAttribute() 실행
    • Model받을 필요도 없음..
    @PostMapping("/add")
    public String addItemV2(@ModelAttribute("item") Item item){

        itemRepository.save(item);
        //model.addAttribute("item", item);
        
        return "basic/item";
    }

 

 

2.3 @ModelAttribute - name 생략


  • @ModelAttribute의 name도 생략이 가능하다.
  • default : Class명을 맨 첫 글자만 소문자로 변경해서 ModelAttribute에 넣어줌.
  • 즉 model.addAttribute("item", item) 대신 해줌 ㅋㅋㅋ
    @PostMapping("/add")
    public String addItemV3(@ModelAttribute Item item){

        itemRepository.save(item);

        return "basic/item";
    }

 

 

2.4 @ModelAttribute 자제를 생략 ㅋㅋㅋㅋㅋㅋ


  • ㅋㅋㅋㅋ
  • model.addAttribute("item", item) 대신 해줌 ㅋㅋㅋ
  • 아 근데 너무줄이는 것 같다..
    @PostMapping("/add")
    public String addItemV4(Item item){
        itemRepository.save(item);
        return "basic/item";
    }

 

 

 

3. GitHub : 210917 @ModelAttribute


 

GitHub - bsh6463/MVC3

Contribute to bsh6463/MVC3 development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] 스프링 MVC 1' 카테고리의 다른 글

[WebPage] PRG Post/Redirect/Get  (0) 2021.09.17
[WebPage] 상품 수정  (0) 2021.09.17
[WebPage] 상품 등록 form  (0) 2021.09.17
[WebPage] 상품 상세  (0) 2021.09.17
[WebPage] Thymeleaf로 고치기  (0) 2021.09.17
Comments