분류 전체보기
-
체크 박스의 다중(지역: 서울, 부산, 제주)스프링/스프링 MVC 패턴 2023. 2. 19. 14:59
체크 박스를 하나만 선택하는 것이 아니라 여러개를 만들어놓고 중복으로 체크를 하거나 여러개 중에서 고를 수 있도록 체크박스를 여러개 만들어 볼 것이다. @GetMapping("/{itemId}") public String item(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); // 추가 Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); model.addAttribute("regi..
-
판매 여부 체크박스스프링/스프링 MVC 패턴 2023. 2. 19. 14:06
th:object="${item}"을 입력하면 thymeleaf에서 object가 item의 객체로 인식해서 이후에 item객체에 있는 변수들을 사용할 때 간략화할 수 있다. th:field="${item.itemName}"으로 적어야하는 상황인데 th:field="*{itemName}으로만 적을 수 있다. (id와 name 둘 다 지워도 됨) 판매 여부를 체크할 수 있는 체크박스 @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); // new Item이라는 빈 객체는 addForm에서 사용하기 위해서 넣어주기 return "form/addForm"; } 우선 form/addForm에..
-
상품 웹 사이트 - 리다이렉트스프링/스프링 MVC 패턴 2023. 2. 16. 17:31
이전 게시글에서 만든 상품 웹 사이트는 문제점이 있다. 첫 번째로 상품 등록 폼에서 새로고침을 할 수 있다는 것이다. 상품 등록 폼에서 새로고침을 한다면 마지막에 전송한 POST /add 상품 데이터를 서버로 다시 전송하게 된다. 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송하기 때문에 결론적으로 ID만 다르고 상세 내용은 같은 데이터가 계속 쌓이는 것이다. PRG Post/Redirect/Get 이러한 문제점을 해결하기 위한 방법이 리다이렉트다. 새로 고침 문제를 해결하는 방법은 상품 저장 후에 뷰 템플릿으로 이동하는 것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주면 되는 것이다. 웹 브라우저는 리다이렉트의 영향으로 상품 저장 후에 실제 상품 상세 화면으로 다시 이동한다...
-
상품 웹 사이트 - 상품 수정스프링/스프링 MVC 패턴 2023. 2. 16. 16:38
@GetMapping("/{itemId}/edit") // 상품 수정 폼 public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/editForm"; } 우선 상품 수정 폼이다. 상품 수정을 누르면 상품을 수정할 수 있는 페이지로 넘어가는 코드이다. 상품 수정 폼이다. editForm.html 상품 수정 폼 상품 ID 상품명 가격 수량 저장 취소 상품 수정을 하는 페이지인데, 상품명, 가격, 수량을 변경할 수 있다. 알맞은 값들을 입력하고 저장을 누르면 상품 수정을 처리해준다. 코드..
-
상품 웹 사이트 - 상품 등록스프링/스프링 MVC 패턴 2023. 2. 16. 15:24
상품 등록 폼 @GetMapping("/add") public String addForm() { return "basic/addForm"; } @GetMapping의 접근을 통해 아래의 addForm.html로 접근한다. addForm.html 상품 등록 폼 상품 입력 상품명 가격 수량 상품등록 취소 상품 등록 폼을 만들어서 상품의 이름, 가격, 수량을 입력하면 상품 등록이 되는 코드이다. 상품 등록폼이다. 여기에 상품명과 가격과 수량을 입력하고 상품 등록을 누르면 아래와 같이 연결된다. 아래의 POSTMapping 접근들은 생성한 후 상세 페이지로 들어가게 해주는 메서드들이다. url이 같더라도 GET인지 POST인지 접근방법에 따라 다르다. @PostMapping("/add") public Strin..
-
상품 웹 사이트 - 상품 상세 페이지스프링/스프링 MVC 패턴 2023. 2. 16. 15:07
상품 목록에서 상품을 누르면 상품 상세페이지가 열려서 수정을 원하면 수정을 할 수 있는 사이트를 만들 것이다. @GetMapping("/{itemId}") public String item(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item"; } 이전 게시글에서 /basic/items/{itemId}로 연결하는 것을 만들었다. @PathVariable을 통해 itemId를 받아오고, findById를 통해 item을 찾아 온 다음 그 item을 모델에 넘겨준다. basic/item.html 파일은 아래와 같..
-
상품 웹 사이트 - 타임리프 (아이템 목록)스프링/스프링 MVC 패턴 2023. 2. 16. 14:52
@RequestMapping("/basic/items") @RequiredArgsConstructor // 생성자 자동 생성 public class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); model.addAttribute("items", items); return "basic/items"; } items 메서드는 localhost:8080/basic/items에 매핑해줘서 아이템 목록을 확인할 수 있게 해주는 메서드이다. itemRepository.findAll()메서드를 ..
-
상품 웹 사이트 - 도메인 개발스프링/스프링 MVC 패턴 2023. 2. 16. 14:27
상품 목록을 보여주고 새로운 상품을 만들고 수정할 수 있는 웹 사이트를 만들어보았다. Item Class @Data // 실무에서는 @Getter @Setter 쓰고 Data는 잘 안씀 public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } } Item 클래스를 만들었는데, id는 상품을 ..