일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- unity 간단 설정
- db
- DROP
- java
- 데이터베이스
- unity 오브젝트
- 요청
- @ Builder
- WriteLine
- 메소드 지정자
- ForignKey
- unity 레이아웃
- JDBC
- C#
- static
- final
- 타입이 서로 다른 두 데이터 제네릭
- MariaDB
- Database
- 평면좌표상에서 두점 거리 구하기
- select
- response
- static을 왜사용할까?
- 타입 변수 표기법
- Create
- 메소드 정의
- spring
- request
- http
- c#상속
- Today
- Total
이론을 싫어!
[Spring] redirect와 forward 둘중 어떤걸 써야될까?? 본문
redirect 은 무엇인가?
redirect는 서버가 클라이언트에게 요청할 주소를 응답결과로 전달하는 것을 의미한다.
말을 좀 풀어서 설명을 하자면 클라이언트에서 요청이 들어왔는데 302로 Location과 함께 즉 response 헤더로 응답이 간다. (1번)
참고로 302 응답 코드는 클라이언트가 요청한 리소스가 헤더에 주어진 URL 에 일시적으로 이동되었다고 알려주는 redirect 상태 응답 코드이다.
302 응답 코드로 response을 보내면 response 헤더에 있는 Location 주소로 Request 하게 된다. (2번)
여기서 자동으로 보내게 되는데 클라이언트에서 보내는 것이 아니라 브라우저가 자동으로 Request 객체를 만들어서 다시 보낸다. (3번)
그리고 난뒤 response으로 클라언트에게 응답을 보내게 된다. (4번)
여기서 1번의 request객체는 수동으로 클라이언트가 보낸것이고, 3번의 request의 객체는 자동으로 생성후 보내진다.
그러다 보니 1번과 3번은 서로 다른 객체라고 봐야한다.
이 말을 읽어도 모르겠다면 우리 일상생활을 예를 들어보자.
자 위의 사진을 보자 .
고객이 분실신고 하기 위해서 카드사에 연락을 한다. (1번)
고객 :" 카드 분실 신고 때문에 연락드렸어요"
그러면 카드사에서 답변이 돌아온다. (2번)
상담 :"아 그러시군요. 여기는 카드분실 담당 업무 번호가 아닙니다. "000-0000 "으로 연락해주세요"
그러면 고객이 전화를 끝고 알려주는 전화번호에 연락을 한다 (3번)
고객 :" 카드 분실 신고 때문에 연락드렸어요"
그러면 카드사 분실 담당 에서 처리를 해준다.(4번)
상담: "해결되었습니다."
이것이 redirect 방식이다.
forward는 무엇인가?
forward 또한 redirect 또한 똑같은 의미를 가지곤 있지만
실행되는 방식이 다르다.
클라이언트에서 요청이 들어오면 첫번째 URL 을 받고 바로 서버에서 URL을 호출한 다음 응답을 클라이언트에서 보낸다.
그렇기 때문에 1번의 request의 객체와 2번의 request의 객체는 같은것이다.
forward 또한 일상생활에서 예를 들자면
고객이 분실신고 하기 위해서 카드사에 연락을 한다. (1번)
고객 :" 카드 분실 신고 때문에 연락드렸어요"
그러면 카드사에서 답변이 돌아온다. (2번)
상담 :"아 그러시군요. 그러면 분실 당담 부서에 연락을 돌릴게요 잠시만 기다려 주세요 "
그러면 카드사 분실 담당 에서 처리를 해준다.(3번)
상담: "해결되었습니다."
이것이 forward의 방식이다.
그러면 redirect와 forward둘중 어떤걸 써야되나??
일단 결론만 말하면 변화가 생길 때는 redirect를 써야하고
변화가 생기지 않는다면 forward를 써야한다.
변화가 생긴다는 말은 어떤말일까?
변화가 생긴다는 말은 데이터가 들어가는 것들이라고 볼수 있다. (회원가입, 게시판 작성, 로그인 등)
변화가 생길때 forward를 쓰게 된다면 처음 요청의 정보를 고대로 사용을 하다보니 글의 정보나 데이터가
여러개가 등록될수 있다. 그러기 때문에 데이터가 들어가는 것 또는 데이터 업데이트 들은 redirect를 써야한다.
그러면 변화가 생기지 않는다는 무슨 말일까?
변화가 생기지 않는다는 말은 데이터가 들어가지 않는것 이라고 설명할수 있다.(게시판 리스트 보기, 검색 등)
데이터가 들어가지 않는다는 것은 DB에 들어가지 않고 단순 조회하기 위해 필요한 데이터를 의미한다.
이럴때는 forward가 훨씬 더 좋다.
'Spring and Springboot' 카테고리의 다른 글
Lombok 빨간색 고추모양??? 에 대해 알아봅시당 (0) | 2023.03.28 |
---|---|
@GetMapping , @PostMapping 에 대해 알아봅시다! (0) | 2023.03.13 |
HTTP 요청과 응답 GET, POST 그리고 실행 결과까지 (0) | 2023.03.09 |
[Spring]웹 애플리케이션 서버(WAS)에 대한 정보 알아보기! (Tomcat 내부 구조 ) (0) | 2023.03.07 |
[Spring] Http 예제 부분 응용 (0) | 2023.03.06 |