[스프링 활용] 상품 수정

atdawn·2024년 6월 19일

SPRING BOOT+JPA

목록 보기
32/49

참고 : 인프런 [ 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 김영한 ]


아이템 컨트롤러

@GetMapping("/items/{itemId}/edit")
    public String updateItemForm(@PathVariable("itemId") Long itemId, Model model){
        Book item = (Book) itemService.findOne(itemId); //예제를 단순하게 하기 위해서 Book을 바로 캐스팅

        BookForm form = new BookForm();
        form.setId(item.getId());
        form.setName(item.getName());
        form.setPrice(item.getPrice());
        form.setStockQuantity(item.getStockQuantity());
        form.setAuthor(item.getAuthor());
        form.setIsbn(item.getIsbn());

        model.addAttribute("form", form);
        return "items/updateItemForm";


    }
    
      @PostMapping("/items/{itemId}/edit")
    public String updateItem(@ModelAttribute("form") BookForm form){

        Book book=new Book();
        book.setId(form.getId());
        book.setName(form.getName());
        book.setPrice(form.getPrice());
        book.setStockQuantity(form.getStockQuantity());
        book.setAuthor(form.getAuthor());
        book.setIsbn(form.getIsbn());

        itemService.saveItem(book); 
        return "redirect:/items";

    }

@PathVariable 어노테이션

  • Spring MVC에서 사용되는 어노테이션
  • URL 경로의 일부를 메소드 매개변수로 바인딩할 때 사용
  • RESTful 웹 서비스에서 클라이언트가 보낸 요청 URL의 일부를 메소드 파라미터로 사용할 때 매우 유용

@ModelAttibute 어노테이션

  • Spring MVC에서 사용되는 어노테이션
  • 요청 매개변수를 바인딩하고 모델에 데이터를 추가할 때 사용
  • 주로 폼 데이터 처리와 함께 사용되며, 컨트롤러 메서드의 파라미터나 반환 값에 사용

updateItemForm.html 생성

...

변경 후

주의 : 누군가가 아이디를 임의적으로 조작해서 넘기고 상품을 수정한다면, 의도치 않은 데이터가 수정될 수 있다.
=> 서비스 계층의 앞단 혹은 뒷단에서 이 유저가 아이템에 대해서 권한이 있는지 없는지 확인하는 로직이 필요하다.

profile
복습 복습 복습

0개의 댓글