일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영속성
- 병행성
- 다이나믹프로그래밍
- 그리디알고리즘
- 타입 객체
- directx
- 자료구조
- codility
- 백준
- 디자인패턴
- 프로그래머스
- OS
- 렌더링 파이프라인
- 동적계획법
- 락
- DirectX 12
- 운영체제
- 스케줄링
- 파일시스템 구현
- DirectX12
- 병행성 관련 오류
- Direct12
- I/O장치
- 컨디션 변수
- 알고리즘
- 멀티프로세서
- 그리디 알고리즘
- 다이나믹 프로그래밍
- 멀티쓰레드
- 쓰레드
- Today
- Total
기록공간
포워딩(Forwarding) 과 리다이렉트(Redirect) 본문
포워딩(Forwarding)
요청을 포워딩할 때 해당 요청은 서버의 다른 자원에 전달된다.
이 때는 다른 차원에서 이 요청을 처리할 것을 클라이언트에게 알리지 않는다.
이와 같은 방식의 처리는 웹 컨테이너 안에서만 일어나고
클라이언트는 알 수 없게 된다.
포워딩은 리다이렉트와 다르게
객체를 요청에 담고 해당 요청을 다음 자원에 전송한다.
따라서 클라이언트는 포워딩이 발생한 사실을 알지 못하는 것이다.
포워딩은 클라이언트와 통신 없이 서버에서만 처리되기 때문에
리다이렉트보다 나은 성능을 갖는다고 할 수 있다.
==> ex) 클라이언트 입장에서 Send08.jsp를 사용하고 있다고 생각할 수 있지만
실제로 Send09.jsp가 Send08.jsp를 제공하고 있을 수도 있음
그 사실은 클라이언트 사용자는 알 수 없다.
리다이렉트(Redirect)
클라이언트의 요청을 처리한 후
컨테이너는 『sendRedirect()』 메소드가 호출되면 브라우저에 응답을 보낸다.
이 응답에는 브라우저가 웹 컨테이너의 응답을 받은 후
다시 요청을 보낼 새로운 URL이 포함되어 있다.
여기서 하나의 요청이 종결된다.
새로 부여받은 URL로 브라우저가 완전히 새롭게 요청하기 때문에
이전의 요청 스코프에 저장되어 있던 객체는
새로운 요청이 이루어지기 전에 소멸된다.
리다이렉트는 추가적으로 발생한 왕복처리 때문에 포워딩보다 느리다고 할 수 있다.
기억해야 할 것은...
최종적으로 수행해야 하는 작업은 새로운 요청에 의한 것이고
이것을 클라이언트가 알고 있기 때문에
브라우저 창의 주소가 처음 요청한 주소가 아니고
최종 주소 값으로 변하게 된다.
또한, 하나의 요청에 담겨있던 객체들은 소멸되고
다음 작업까지 전달되지 않는다.
==> ex) java.sun.com → oracle.com/java/technologies 로 접속됨
(왜냐하면 리다이렉트 되었기 때문에.. )
※ 기본적으로 클라이언트의 입장에서 편한 것은 포워딩이지만 DB에서 작업이 이루어지고 다시 그에 대한 응답을 받은 클라이언트가 요청하게끔 만들어야 하는 경우는 리다이렉트를 사용해야 한다.
list.jsp → db → select → view → client
list.jsp → db → insert
이름 [ 이준구 ]
전화번호 [ 010-4444-4444 ]
<데이터 입력>
// ==> 입력시 입력된 정보를 확인하기(SELECT) 위해 요청을 다시해야 한다.
// 리다이렉트
김일웅 010-1111-1111
김보경 010-2222-2222
이예슬 010-3333-3333
이준구 010-4444-4444