Servlet을 이용하여 client에서 보내준 값을 Servlet1 -> Servlet2로 보내서 띄우기 위해 Forward와 Redirect방식을 이용해서 처리를 하였다.
Client에서 Post방식으로 데이터를 보내줬고, Servlet1에서 doPost로 데이터를 받았다. 그 후 Forward방식과, Redirect를 이용하여서 Servlet2로 보내주었고, Servlet2에서 doGet방식으로 데이터를 받으려고 했다.
하지만 Redirect방식만 응답이 있었고, Forward방식은 응답이 없었다.
그래서 Client에서 Get방식으로 데이터를 보내줬고, 똑같이 수행하니 Redirect와 Forward 두가지 방식 모두 다 응답이 있었다. 여기서 나는 왜 Get방식으로 보내면 둘 다 응답이 가고, Post방식으로 보내면 리다이렉트만 응답이 가는지에 대해 궁금했고 열심히 구글링을 한 결과 그 이유를 알 수 있었다. 이는 Forward와 Redirect의 데이터 전송 방식에 차이가 있었다.
Forward방식
Forward 방식은
Client -> Servlet1 -> Servlet2 -> Client 과정으로 클라이언트와 서버 간 데이터 통신이 한번에 이루어진다.
그러므로 req에 들어있는 데이터 값도 유지가 되고, GET이면 GET / POST면 POST로 통신을 한다.
Redirect 방식
Redirect 방식은
Client -> Servlet1 -> Client -> Servlet2 -> Client 과정으로 클라이언트와 서버 간 데이터 통신이 두번 이루어 진다.
그러므로 처음 Client가 보낼 때 req에 들어있는 데이터는 redirect02로 요청하라 할 때 사라져 버리기 때문에 Servlet1에서 세션에 미리 저장해둔 다음 사용한다.
https://youngjinmo.github.io/2020/08/servlet-redirect-forward/
'개념공부' 카테고리의 다른 글
알고리즘 디자인 설계 : Flowchart와 Psuedo-code (0) | 2021.12.27 |
---|---|
[기초 코딩용어 해설] 01. 컴퓨터와 인터넷 (0) | 2021.12.03 |
[BigInteger] 무한대로 큰 수를 계산해야 한다면? BigInteger (0) | 2021.11.05 |
[Deque] queue(큐)와 stack(스택)을 둘 다 사용할 수 있는 deque(덱) (0) | 2021.11.04 |
[Junit] 단정함수 및 기능 (0) | 2021.10.22 |
댓글