본문 바로가기
개발/Spring

[스프링MVC] PostMapping Controller 작성 방법

by 똥먹는낙타 2023. 2. 2.
728x90
반응형

1. @RequestParam 이용

@PostMapping("/add")
    public String addItemV1(@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";
    }
  • @RequestParam String itemName : itemName 요청 파라미터 데이터를 해당 변수에 받는다.
  • Item 객체를 생성하고 set을 사용하여 받아온 데이터를 넣어준 뒤, 저장된 item을 model에 담아서 view로 넘겨준다.

2. @ModelAttribute 이용 ← @Requestparam을 한번에!

@PostMapping("/add")
    public String addItemV2(@ModelAttribute("item") Item item){

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

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

        return "/basic/item";
    }
  • @ModelAttribute를 이용하면 객체의 각 속성들을 하나하나 담을 필요 없이 바로 Item객체를 생성해서 요청 파라미터의 값을 프로퍼티 접근법(setXxx)으로 입력해준다.
  • @ModelAttribute(”item”)model.addAttribute(”item”, item)을 의미한다. 이처럼 @ModelAttributemodel에 지정한 객체를 자동으로 넣어준다.

3. @ModelAttribute 이름 생략 가능

@PostMapping("/add")
    public String addItemV3(@ModelAttribute Item item){
        // 클래스 이름이 Item -> item 으로 model에 들어감
        itemRepository.save(item);
        return "/basic/item";
    }
  • view에 넘겨줄 때, 클래스 이름에서 맨 앞의 글자만 소문자로 바꿔서 넘겨준다.
  • ex) Itemitem으로 바꿔서 view에 넘겨주기 때문에 (”item”)은 생략 가능하다.

4. @ModelAttribute 생략 가능

@PostMapping("/add")
    public String addItemV4(Item item){
        // string, int 같은 단순 타입이 오면 @RequestParam이 자동 적용하므로 생략 가능
        // 객체의 경우 @ModelAttribute가 자동으로 적용하므로 생략 가능
        itemRepository.save(item);
        return "/basic/item";
    }
  • 아예 @ModelAttribute도 생략 가능하다. 대상 객체는 model에 자동 등록된다.
728x90
반응형

댓글