ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링부트/웹 애플리케이션 개발]회원 목록 조회, 상품 등록, 상품 목록, 상품 수정
    스프링&스프링부트 2023. 1. 5. 16:27

    회원 목록 조회, MemberController

    @Controller
    @RequiredArgsConstructor
    public class MemberController {
    
        private final MemberService memberService;
    
        @GetMapping("/members")
        public String list(Model model) {
            List<Member> members = memberService.findMembers();
            model.addAttribute("members", members);
            return "members/memberList";
        }
    
    }

     

     

     

    상품 등록, BookForm

    package jpabook.jpashop.controller;
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter @Setter
    public class BookForm {
        
        private Long id;
    
        private String name;
        private int price;
        private int stockQuantity;
        
        private String author;
        private String isbn;
        
    }

     

     

     

    ItemController

    package jpabook.jpashop.controller;
    
    import jpabook.jpashop.domain.item.Book;
    import jpabook.jpashop.service.ItemService;
    import lombok.RequiredArgsConstructor;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    
    @Controller
    @RequiredArgsConstructor
    public class ItemController {
    
        private final ItemService itemService;
    
        @GetMapping("/items/new")
        public String createForm(Model model) {
            model.addAttribute("form", new BookForm());
            return "items/createItemForm";
        }
    
        @PostMapping("/items/new")
        public String create(BookForm form) {
    
            Book book = new Book();
            book.setName(form.getName());
            book.setPrice(form.getPrice());
            book.setStockQuantity(form.getStockQuantity());
            book.setAuthor(form.getAuthor());
            book.setIsbn(form.getIsbn());
            //setter 없이 설계하는게 좋은 설계
            //order에서 처럼 static 생성자를 가지고 setter 제거
    
            itemService.saveItem(book);
    
            return "redirect:/";
        }
    
    }

     

     

     

    상품 목록

    @Controller
    @RequiredArgsConstructor
    public class ItemController {
    
        private final ItemService itemService;
    
        @GetMapping("/items")
        public String list(Model model) {
            List<Item> items = itemService.findItem();
            model.addAttribute("items", items);
            return "items/itemList";
        }
    
    }

     

     

     

    상품 수정, ItemController

    @Controller
    @RequiredArgsConstructor
    public class ItemController {
    
        private final ItemService itemService;
    
        @GetMapping("/items/{itemId}/edit")
        public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) {
            Book item = (Book) itemService.findOne(itemId);
    
            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";
        }
    
    }

     

     

     

    BookForm

    package jpabook.jpashop.controller;
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter @Setter
    public class BookForm {
    
        private Long id;
    
        private String name;
        private int price;
        private int stockQuantity;
    
        private String author;
        private String isbn;
    
    }
    
    //보안상 취약점이 많음
    //서비스계층 혹은 어딘가에서 user가 아이템에 대해 권한이 있는지 확인해주는 로직이 서버에 필요
    //업데이트할 객체를 세션에 담아 풀어낼 수 있지만 요즘 세션 객체를 많이 사용하지 않음 

     

     

    728x90
Designed by Tistory.