일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 운영체제
- I/O장치
- 동적계획법
- 백준
- 멀티쓰레드
- 렌더링 파이프라인
- 다이나믹프로그래밍
- directx
- 병행성
- DirectX 12
- 파일시스템 구현
- 그리디알고리즘
- 다이나믹 프로그래밍
- OS
- 타입 객체
- 락
- 쓰레드
- 스케줄링
- 프로그래머스
- codility
- 멀티프로세서
- Direct12
- 디자인패턴
- 알고리즘
- 그리디 알고리즘
- 영속성
- 컨디션 변수
- 자료구조
- DirectX12
- 병행성 관련 오류
- Today
- Total
기록공간
RedirectAttributes 본문
<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
'BackEnd > Spring' 카테고리의 다른 글
AOP라는 패러다임 (0) | 2021.03.19 |
---|---|
[Spring 에러] Unable to find Log4j2 as default logging library. (0) | 2021.03.12 |
servlet-context.xml, root-context.xml, web.xml 차이점 (0) | 2021.03.11 |
[Spring 에러] @GetMapping, @PostMapping 등 어노테이션 import 에러 (0) | 2021.03.11 |
스프링 MVC 프로젝트의 기본 구성 (0) | 2021.03.09 |