기록공간

RedirectAttributes 본문

BackEnd/Spring

RedirectAttributes

입코딩 2021. 3. 16. 01:23
반응형

<form> 태그가 있는 HTML 문서를 서버로 보내면(POST) 곧이어 다른 페이지로 Redirect 된다고 가정해보자. 하지만 Redirect 방식은 GET방식이기 때문에 이러한 데이터 전송에는 적절하지 않다.

 

다음 그림은 Redirect의 특징을 나타낸다. Spitter라는 객체를 보내려고 한다. 하지만 Redirect가 발생하면 원래 요청은 끊어지고, 새로 HTTP GET 요청이 시작된다. 왜냐하면 Redirect는 서버가 브라우저(사용자)에게 "Redirect할 URL로 GET 요청 방식을 사용해 Redirect 해라" 라고 명령을 내리는 것이기 때문이다. 그러므로 Model에 담겨져 있던 데이터 Spitter 객체는 소멸한다. 결국 Redirect를 사용하여 Model 객체를 전달하는 것은 의미가 없다. 그러면 Redirect를 사용해서 데이터를 보내는 방법은 없을까? 

 

 

GET의 특징 이용

 

Redirect는 HTTP GET 방식이라고 앞서 말했다. GET 방식은 다음 그림처럼 url 뒤에 파라미터를 붙여서 전달한다. 그렇기 때문에 URL에 노출되는 단점이 있다.

 

 

RedirectAttributes

 

그래서 스프링은 RedirectAttributes 클래스를 제공한다. 이 클래스는 모델의 기능을 그대로 확장하였으며, 몇 개의 도움이 되는 메소드가 추가되었다. 

 

RedirectAttributes는 다음 그림처럼 Redirect가 발생하기 전에 모든 Flash 속성의 데이터를 세션에 복사(addFlashAttribute)한다. Redirect 후에 세션에 저장된 데이터를 모델로 이동시킨다. 세션을 사용하므로, 헤더에 파라미터를 붙이지 않기 때문에 정보가 URL에 노출되지 않는다. 

 

RedirectAttribute에서 제공하는 메소드 addFlashAttribute()는 Redirect 직전 Flash에 저장하는 메소드이다. 그러므로 Redirect 이후에는 소멸한다.

 


출처 : m.blog.naver.com/allkanet72/220964699929

 

반응형
Comments