작성
·
1.4K
답변 1
1
안녕하세요. 제로입니다.
챕텨 1 MasterController.java 를 보면 아래 코드가 있습니다.
그걸 기준으로 설명드릴께요.
RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl);
dispatcher.forward(request, response);
- getRequestDispatcher() 가 포워딩 역할인지?
코드를 그대로 읽어보면
request 객체에 있는 getRequestDispatcher() 기능을 통해
dispatcher 객체를 가져온 뒤
dispatcher 객체에 있는 forward() 기능을 사용함을 알 수 있습니다.
그렇기 때문에 getRequestDispatcher() 는 포워딩을 하는게 아닌
RequestDispatcher 클래스로 포장된(형태가 정해진)
dispatcher 객체를 얻을 수 있는 기능입니다.
실제 포워딩은 dispatcher 객체에 있는 forward() 기능을 통해 합니다.
- 다른 서블릿에 넘기는지
dispatcher.forward(request, response);
기능은 출력을 다른 서블릿으로 넘기는게 아닙니다.
request, response 객체를 같은걸 쓰기 때문입니다.
- 객체바인딩이라고 봐도 되는지
이후 강의때 IOC 와 DI 를 설명할텐데
거기에는 동적으로 클래스를 로드 하고 객체를 생성하기 위한
생성자(초기값)을 개발자의 코드가 아닌 데이터로 실행하는 걸 볼 수 있습니다.
좀 어렵게 이야기 했는데
객체바인딩은 개발자의 코드가 아닌 데이터로
객체를 만들어내는 과정이라 볼 수 있고
그렇게 보면
RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl)
코드를 통해 만들어진 dispatcher 객체는 객체바인딩을 통해 만들어 졌다고 볼 수 있습니다.
jspUrl 이 데이터 역할을 합니다.
질문 주셔서 감사합니다.