Yeon93
1k
2019-11-02 17:06:36 작성 2019-11-02 17:09:56 수정됨
2
91

'RequestDispatcher' 질문 드립니다~~~



RequestDispatcher dispatcher =
request.getRequestDispatcher("/view_students.jsp");

dispatcher.forward(request, response);

여기서 RequestDispatcher가 클라이언트로부터 원하는 자원을 요청하잖아요.

reqeust.getRequestDispatcher를 사용해서 "view_students.jsp"로 이걸 보내구요.


그러면 dispatcher.forward는 뭘 뜻하는건가요??

이것도 똑같이 넘기는거 아닌가요???




아니면 reqeust.getRequestDispatcher가 "view_student.jsp"로 보낼 정보를 가져오는거고,

forward가 넘기는건가요?

0
0
  • 답변 2

  • 0
  • 모카커피
    82
    2019-11-03 15:20:22

    일단 서블릿에서 데이터를 전송하는 방법이 대표적으로 두가지가 있는데

    하나가 response객체의 리다이렉트고 하나가 request객체의 디스패쳐 입니다.

    둘의 차이는 다른 블로거분이 명시한 대로 적혀져있겠지만

    A,B라는 두개의 페이지가 있고 host라는 사용자가 있다고 가정합시다.

    host 가 A에서의 작업을 다 끝내고 바로 B라는 페이지로 이동 할 수있게끔 합니다.

    하지만 기존 A로 전송된 요청정보는 유지할 수 없습니다. 즉 B로 이동할 때는 기존 A로 보낸

    요청정보가 모두 리셋되서 B로 보내지는것이지요. 그리고 페이지 리소스도 B의 것을 처음부터 다시 받아오구요.

    이것이 리다이렉트 입니다.

    하지만 디스패쳐 포워드는 사용자가 A에서 작업을 끝내고 B로 이동하는 코드를 작성했을 때

    기존클라이언트가 A로 보냈던 초기의 요청정보를 모두 기억하고 있는 상태에서 그 요청정보를 다시 B로 보내는겁니다.

    즉 하나의 요청정보를 디스패쳐와 연결되어있는 모든 페이지에서 공유하는 것이지요.

    그리고 포워드는 기존 디스패쳐가 명시된 페이지에서 (예를 들어 A페이지) B페이지로 페이지 리소스를 새로 받아오지

    않기때문에 해당 자바코드 처리만 하고 끝낸다는 점이있습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.