강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

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

상품 등록 처리 - @ModelAttribute

상품 등록 처리, 포스트 맵핑,addItem 메서드에서 리턴값(view 질문)

해결된 질문

작성

·

41

0

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

[질문 내용]
안녕하세요. 세션8 웹페이지 만들기를 영한님 강의를 보면서 혼자서 output까지 할수 있는상황을 만들려고 코드를 보고,따라 치고 그러는 와중 이었습니다.

그러는 와중 상품 등록 처리에서 완료하고, 상품 상세 폼으로 가지 말고, 그냥 전체 상품을 보여주자 라는 생각이 들어서 코드의 리턴값(뷰값을) 을 "basic/item" 에서 "basic/items"로 변환을 하였습니다. (사진 참조)

image.png

그리고 인터넷으로 상품 등록을 시키고 결과 화면이.

image.png

이렇게 나오는것이었습니다.
그래서 결과가 잘나오는지 확인하기 위해서 localhost8080:/basic/items을 인터넷으로 쳐보니 등록된 상품이 나오는 것을 확인할 수 있었습니다.

image.png

그래서 어떻게 해야 결과가 나올까 생각하다가 리다이엑트가 생각나서 리다이엑트를 적용하고 등록하니 위에 화면처럼 다시 갈수 있는것을 확인할 수 있었습니다.

image.pngimage.png

 

그래서 질문이 왜 리다이렉트를 쓰면 결과가 정상적으로 나오고 그냥 리턴값을 basic/items으로 하면 화면은 정상적으로 아이템즈 화면인데, url값은 basic/items/add 가 추가된것인지 궁금합니다.

답변부탁드립니다.

 

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 생각하는자님.

질문 주신 내용은 Spring MVC에서 Post-Redirect-Get 패턴에 대한 질문으로 이해됩니다. 이 패턴은 POST 요청 후 사용자가 브라우저의 새로고침 버튼을 눌러도 데이터가 중복 저장되지 않도록 하기 위해 사용됩니다.

왜 리다이렉트를 사용해야 하는가?

  1. POST-Redirect-GET 패턴 활용: 상품 등록과 같은 상태 변경 작업 후에는 브라우저가 같은 POST 요청을 다시 보내는 상황을 방지해야 합니다. 이때 리다이렉트를 사용하여 GET 요청을 보내도록 유도합니다.

  2. 브라우저 동작 방식: 브라우저는 POST 요청 후 서버로부터 redirect 명령(response status 302)을 받으면, 자동으로 명시된 URL로 GET 요청을 합니다. 이러한 과정에서 URL은 ‘basic/items’로 설정되며, 사용자가 새로고침을 누르더라도 같은 페이지를 유지합니다.

  3. URL 유지: 리다이렉트를 사용하지 않을 경우, 브라우저는 POST 요청을 그대로 유지하려고 합니다. 때문에 URL에 여전히 ‘add’ 경로가 포함된 상태로 남습니다.

리다이렉트를 사용했을 때의 장점

  • 상태 유지: 사용자가 “새로고침” 버튼을 눌러도 재요청이 발생하지 않으며, 결과적으로 중복 데이터 저장을 막을 수 있습니다.
  • 깨끗한 URL: 리다이렉트 후에는 사용자가 마지막으로 이동한 GET 요청 경로가 표시되기 때문에 의도한 URL 형식을 유지할 수 있습니다.

기존 Post에서 바로 View로 이동하는 방식은 실무에서 권장되지 않습니다. 데이터를 안전하게 관리하고, 사용자 경험을 향상시키기 위해서라도 리다이렉트를 적극 활용하는 것이 좋습니다.

위와 관련된 기존 질문 답변에서 자세한 예시나 논의를 확인해 보실 수 있습니다. 관련 내용을 참고하실 수 있는 유사한 질문 링크는 다음과 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

질문하기