자바/스프링(Spring)

스프링 Redirect를 활용해보자

류창 2022. 4. 19. 21:31
반응형

 

 

Redirect란?

 

쉽게 예시를들자면,   3년전에  가게 A를 운영하다가  가게 점주 김씨가 A를 허물고 가게 B로 이사를한것이다.

그렇다면 손님들은  점주 김씨가 운영하던 가게 A를 이용하려고 했지만, 가게 A는 이미 허물고 없어졋다.

 

그러더니 안내인 박씨가 나타나  손님들을 이끌고 "가게 A는 허물었으니 새로지은 가게 B로 오세요" 라고 손님들을

인솔하는것이다.

 

Redirect는 딱 안내인 박씨가 하는 역활과 동일하다.

 

 

 

Redirect를 활용한 사이트를 예시를 들자면 나무위키를 들어보자.

 

 

검색창에  ㄴㅇㅅ를 치면   자동으로 알아서 '나이스' 검색결과로 Redirect를 해준다.

 

 

실제로 이것이 일어났다

ㄴㅇㅅ이라는 검색결과는 적절치못하니 서버가 Redirect를 해준것이다.

 

 

 

Redirect는 잘 활용하면,  Post의 중복을 막아준다

 

 

 

해당페이지를 새로고침하면 무슨일이 일어날까?

 

한번 새로고침 5번 해봣다.

그렇다 같은 PostMapping요청이 5번들어간다.

 

 

이게 큰 문제로 번질수있다.  

예를들어, 10만원 결제 요청을 한뒤, 새로고침을 5번 진행을하면  50만원 결제가 추가로 되어버린다.

 

이 사태를 막기위해 redirect를 활용할수가있다.

 

 

redirect를 통해서,  GetMapping인  /basic/items 로 이동시킨다.

 

해당코드를 실행한뒤 새로고침을 눌러도 @PostMapping 중복처리가 되지않는다.

 

 

 

 

 

RedirectAttribute

 

 

리다이렉트를 할때  추가 속성을 담아서 보낼수가 있다.

 

 

redirectAttributes.addAttribute로  URI주소에 속성을 담을수있다.   

 

이 코드는  모델인 Item에서  itemId를뽑고  status란 이름의 true값을 주소에 넣는다.

 

이 코드를 실행하고 확인해보면..

 

이렇게나온다.

반응형