inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

섹션7의 PRG Post/Redirect/Get 질문입니다.

해결된 질문

253

오르골

작성한 질문수 7

1

섹션 7의 PRG Post/Redirect/Get에서요,

 

7:30에

5645654634.PNG

retrun "basic/item";

이 부분을 리다이렉트로 수정하시는데요,

 

혹시 basic/item 뷰페이지로 이동되지 않고 그대로 남는 이유가,

포스트요청이라서 리턴값을 뷰페이지로 취급하지 않는 것 아닌가해서요.

겟요청이였으면 저렇게 리턴을 했어도 뷰페이지로 자동 리다이렉트까지 되었지 않았을까요...?

 

그대로 남는 이유를 새로고침으로 인한 중복 오류를 중심으로 말씀해주시지만 리턴값과 연결해서 설명해주시지 않으셔서 헷갈리네요.

 

 

spring mvc

답변 1

2

David

안녕하세요. 오르골님, 공식 서포터즈 David입니다.

POST 요청의 응답으로 basic/item이 응답되는 이유는 해당 영상의 초반부에서 자세히 설명하고 있습니다.

POST /add의 요청결과로 basic/item 뷰가 제공되고 있습니다. basic/item 뷰가 제공되기 때문에 응답결과 화면으로 입력 폼이 아닌 수정 폼이 보이는 것입니다.

즉, HTTP 메서드가 GET, POST와 별개로 POST의 응답이 basic/item 뷰로 응답하고 있는 것이 문제가 되는 것입니다. POST /add를 호출한 상태로 URL이 변하지 않고 basic/item 뷰로만 응답이 오고 있는 상태로는 새로고침에 의해 아이템이 생성되는 문제가 있습니다.

이를 방지하기 위해 redirect를 사용하여 생성된 아이템의 상세 화면으로 브라우저가 요청을 다시 하도록 하는 것입니다.

헷갈리신다면 해당 영상을 반복하여 수강하시길 권장드리며 그래도 이해되지 않는 부분은 질문 남겨주시면 언제든 답변 드리겠습니다🙂

감사합니다.

0

오르골

데이비드 선생님 친절하고 상세한 답변 감사드립니다.

해주신 답변을 잘 읽어보았습니다. 그런데 답변에 제가 이해되지 않는 부분이 있어서 답글을 남깁니다.

해주신 답변에는, "POST /add의 요청결과로 basic/item 뷰가 제공되고 있습니다. basic/item 뷰가 제공되기 때문에 응답결과 화면으로 입력 폼이 아닌 수정 폼이 보이는 것입니다."
라고 하셨는데,
basic/item 뷰는 목록보기 페이지입니다.
(영상에 0:30 초에 '목록으로' 버튼을 누른걸 보시면 확인가능 합니다)

수정폼의 뷰 페이지는 오히려 수동적으로 이전 작업 페이지의 주소를 그대로 이어받아버린 basic/items/add 로써, 상품등록(상품수정에서 상품등록)시에 마땅한 페이지가 할당이 되지 않았네요.

 

1

David

요청 URL과 응답 뷰를 헷갈리신 같습니다.

V4 POST /add를 요청하면 응답으로 basic/item이라는 문자열을 반환하고 있습니다.

이는 templates/basic/item.html을 응답결과로 반환하는 것입니다.

즉, V4의 POST /add 요청은 templates/basic/item.html을 응답결과로 반환하는 것입니다.

따라서, 이전 답변에서 POST /add의 요청결과로 basic/item 뷰(templates/basic/item.html)가 제공되고 있다고 한 것입니다.

image

아울러, 아이템 목록 페이지는 GET /basic/items 요청을 서버로 보냅니다. 이 요청을 컨트롤러에서는 어떤 응답(뷰)을 제공하는지 확인해 보시면 좋을 것 같습니다.

0

오르골

제가 착오가 있었네요. 말씀하신 답변이 맞습니다.
제 착오를 고쳐서 다시 질문하자면,
"GET요청으로 파라미터를 보내서 처리 했다면 url이 바뀌어지니 굳이 리다이렉트를 리턴값에 넣지 않아도 되었을까요?"
가 되겠네요.
새로운 질문에 대한 답은 그렇다 가 되지 않을까 생각하네요.

해주신 답변 덕분에 궁금증이 해결되었습니다. 감사드립니다.

servlet과 container에 대한 질문입니다

0

25

1

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

0

64

1

jsp 의존성 수정 요청

0

80

2

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

0

143

1

save() 메서드 문의

0

67

1

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

0

101

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

97

1

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

0

119

2

save 후 결과화면

0

89

2

jsp를 이용한 view

0

97

1

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

0

178

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

100

3

파일 오픈 시

0

70

1

스프링 배치 관련

0

78

1

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

0

112

1

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

0

96

1

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

0

79

1

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

0

111

1

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

0

75

1

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

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

77

2