본문 바로가기
교재 실습/자바 웹 개발 워크북

43. 포워딩과 인클루딩 (1)

by Jint 2022. 6. 13.

서블릿끼리 작업을 위임하는 방법에는 포워딩(Forwarding)과 인클루딩(Including)이 있다.

 

포워드 방식은 작업을 한 번 위임하면 다시 이전 서블릿으로 제어권이 돌아오지 않는다(그림 1).

그림 1 (포워드 위임 방식)

① 웹 브라우저가 '서블릿A'를 요청하면, '서블릿A'는 작업을 수행한다.

② '서블릿A'에서 '서블릿B'로 실행을 위임한다.

③ '서블릿B'는 작업을 수행하고 나서 응답을 완료한다. '서블릿A'로 제어권이 돌아가지 않는다.

 

인클루드 방식은 다른 서블릿으로 작업을 위임한 후, 그 서블릿의 실행이 끝나면 다시 이전 서블릿으로 제어권이 넘어온다(그림 2).

그림 2 (인클루드 위임 방식)

① 웹 브라우저가 '서블릿A'를 요청하면, '서블릿A'는 작업을 수행한다.
② '서블릿A'에서 '서블릿B'로 실행을 위임한다.
③ '서블릿B'는 작업을 수행하고 나서 다시 '서블릿A'로 제어권을 넘긴다.

④ '서블릿A'는 나머지 작업을 수행한 후 응답을 완료한다.

 

어떤 위임 방식을 사용할지는 제어권의 반환이 필요한가, 아닌가를 따져 결정하면 된다.

 

1. 포워딩과 인클루딩 실습

먼저 포워딩부터 실습한다. 서블릿을 실행하다가 오류가 발생하면, 현재는 예외 객체를 던졌다. 이 부분을 포워딩으로 오류 정보를 출력하는 페이지로 위임한다(그림 3).

그림 3 (포워딩 실습 시나리오)

 

그 다음에는 인클루딩을 실습한다. 사실 인클루딩은 이전 예제에서 경험한 상태인데, 서블릿에서 JSP로 출력 작업을 위임할 때 인클루딩 방식을 사용하였다. 하지만, 인클루딩을 좀 더 알아보기 위해 전형적으로 사용되는 사례를 실습한다.

보통 웹 페이지를 보면 화면 상단에 웹 사이트 이름이 있고, 하단에는 권리나 주소 등이 있다. 인클루딩을 사용하여 회원 목록 페이지의 상단과 하단에 정보를 출력해 본다(그림 4).

그림 4 (인클루딩 실습 시나리오)

① 웹 브라우저는 회원 목록 페이지를 위해 MemberListServlet 클래스를 요청한다.
② MemberListServlet 클래스는 데이터베이스에서 회원 정보를 가져온다. 그리고 출력을 위해 MemberList.jsp로 실행을 위임(인클루딩 방식)한다.
③ MemberList.jsp는 화면의 상단 내용 출력을 위해 Header.jsp로 실행을 위임(인클루딩 방식)한다.
④ Header.jsp는 화면 상단 내용을 출력하고, 다시 MemberList.jsp로 제어권을 넘긴다.

⑤ MemberList.jsp는 회원 목록 테이블을 출력한다. 그리고 화면의 하단 내용 출력을 위해 Tail.jsp로 실행을 위임(인클루딩 방식)한다.
⑥ Tail.jsp는 화면의 하단 내용을 출력하고, 다시 MemberList.jsp로 제어권을 넘긴다.
⑦ MemberList.jsp는 마무리 출력을 수행한 다음, 제어권을 MemberListServlet 클래스로 넘긴다.
⑧ MemberListServlet 클래스는 응답을 완료한다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

댓글