Redirect , forward (boot_2_14)

/write으로 request 요청이 들어가서 요청 객체를 생성하였으나, 로그인 등의 처리를 하지 않은 경우 300번 응답이 돌아와 /login 요청 객체가 또 만들어지고 해당 경로로 이동한다.

쓰기 페이지에서 자동으로 로그인 페이지로 이동하고 화면이 바뀐다.

즉 2번 요청 2번 응답이 이루어진다.

여기서 두번째 요청은 브라우저에 의한 자동 요청이다.

1번째 수동요청은 GET, POST 둘다 가능하지만

2번째 브라우저 자동요청은 무조건 GET만이다.

(바디 없이 헤더만 존재)

리direct의 문제

카드를 분실해서 번호 0000으로 전화를 해서 상세 설명을 했는데

부서가 다르다고 1111로 리다이렉트를 걸면 이전 수동 요청의 상세설명을 또 해야 하는 문제가 생긴다.

1과 2의 요청 내용이 객체적으로 다르다.

Forward

리다이렉과 달리 요청 1을 그대로 밀고 나간다. 한번에 /write 경로만 이용한다 (리다이렉과 달리 요청경로가 바뀌지 않는다)

write.jsp 이후에 encode.jsp가 처리를 하더라도 브라우저는 이를 인지하지 못한다.

즉 1번 요청, 1번 응답이다.

write.jsp가 일부만 처리하고 나머지는 encode.jsp가 처리하는 등 협력 방식을 택할 수도 있다.

그래서 write.jsp의 내용을 request 객체에 저장할 수 있다. 그러면 encode.jsp에서 request 객체 내용을 읽어와서 사용할 수 있다.

세션이나 애플리케이션 같은데 보다 리퀘 객체에 넣는 게 더 낫다.