inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품관리 삭제 구현을 해봤는데 잘안되서 질문드립니다.

1209

한라봉

작성한 질문수 10

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요.
MVC1 강의를 듣고 삭제를 따로 구현해보고있는데, 에러가 나서 질문드립니다.
 
먼저 itemRepository에 삭제 코드를 구현했습니다.
map 형태라서 ItemId를 key값으로 받아서 remove 메서드를 이용해 삭제하려고 작성했습니다.
테스트 까지 완료했습니다
// 삭제
public void delete(Long ItemId){
store.remove(ItemId);
}
Controller에서는 해당코드로 작성했습니다.
// 상품삭제하기
@DeleteMapping("/delete/{itemId}")
public String deleteItem(@PathVariable Long itemId){
itemRepository.delete(itemId);
return "redirect:/basic/items";
}
 
html에서는 item.html(상세페이지) 에 삭제 버튼을 넣었습니다.
<div><a th:href="@{/basic/items/delete/{itemId}(itemId=${item.id})}">삭제</a></div>
 
이렇게 하고 삭제버튼을 누르면
http://localhost:8080/basic/items/delete/2
 

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Jun 11 00:39:51 KST 2022
There was an unexpected error (type=Method Not Allowed, status=405).
 
해당 에러 메세지가 뜨는데
혹시 잘못된 곳이 어디인지 알 수 있을까요??
 
 
정리하면, 
삭제버튼을 누르면 /basic/items/delete{itemId} 가 실행되서,
컨트롤러에 있는deleteItem 이 호출되어서 실행되고,
이후 redirect로 items 화면으로 이동되는것으로 이해했는데,
 
오류가 왜 나는지 모르겠습니다.
 
아주 간단한 질문이지만, 부끄러움을 무릅쓰고 질문드립니다.
 
감사합니다!
 
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
오류 메세지보고
@DeleteMapping 을 @GetMapping 으로 바꾸니 작동이 잘 되네요..
 
삭제 맵핑을 @GetMapping 으로 왜 작성을 해야하는지 이해가 안갑니다 ㅠㅠ
 
데이터에 저장/수정/삭제는 @PostMapping으로 해야하는것으로 알고있는데,
제가 잘못이해하고 있는건지 궁금합니다.
 
또한 @DeleteMapping은 언제 사용하면 되는건지 궁금합니다.
 
 
 
 

spring MVC

답변 1

0

OMG

안녕하세요. 윤종님, 공식 서포터즈 OMG입니다.

@DeleteMapping 대신 @GetMapping으로 확인해주세요


감사합니다.

0

한라봉

OMG님 안녕하세요!

@GetMapping 으로는 정상작동합니다

@PostMapping 이나 @DeleteMapping 을 사용하고 싶으면 따로 설정해주어야 할게 있는 지 궁금합니다

0

OMG

a태그는 화면이동을 처리하여 http Get 메서드가 동작합니다.

JS를 사용하여 api 통신으로 처리하거나 타임리프를 사용한다면 다음과 같이 스프링, 타임리프 지원 기능을 이용할 수 있습니다.

https://java.tutorialink.com/how-to-send-put-patch-delete-requests-in-thymeleaf-template/

 

 

0

한라봉

OMG 님 답변주셔서 감사합니다.

확인해보고 다시 시도해보겠습니다!

감사합니다 !

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

30

1

servlet과 container에 대한 질문입니다

0

54

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

85

1

jsp 의존성 수정 요청

0

126

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

159

1

save() 메서드 문의

0

78

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

114

1

request-body-json

0

96

2

MVC 패턴의 적용 단위

0

103

1

RequestMapping을 이용한 핸들러, 어댑터

0

124

2

save 후 결과화면

0

101

2

jsp를 이용한 view

0

102

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

192

1

수업 코드 제공 관련 문의

0

107

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

109

3

파일 오픈 시

0

75

1

스프링 배치 관련

0

81

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

115

1

postman으로 /request-body-json-v1 호출시 500 error

0

106

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

90

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

119

1

console log 출력 관련 질문입니다.

0

79

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

147

1

html 변경하는 부분 적용 문제

0

109

1