둘의 차이가 비슷하지만 미묘한 차이가 있는 것 같습니다.

* <%@ page include %> 이하 1
* <jsp:include> 이하 2

둘다 다른 파일을 인클루드 해서 합치는건 맞지만 1번은 컴파일 단계에서 합쳐져서 컴파일 됩니다.
그러니까 C로 말하면 #include 와 같은 기능입니다.
2번은 인클루드 하는건 맞지만 출력버퍼에 내용을 합칩니다.
결국 C로 이야기 하면은 C 파일을 컴파일 하면은 페이지 별로 .obj 파일이 생성하는데 그 다음 링크단계에서
합쳐서 하나의 모듈을 완성하는 것과 비슷한 단계입니다.
글을 적고 보니까 더 헷갈리는데

1번은 컴파일 전에 소스코드단에서 합쳐지기때문에 변수 공유가 가능하고
2번은 컴파일 후에 C의 링크(?) 단계와 비슷하게 합쳐지기 때문에 변수 공유를 할려면 영역 관련된 객체
(Request, Session, Application을 사용해서 공유하거나, <jap:param>을 사용해서 파라미터를 추가)
* 2011-05-30 : 링크단계보다 런타임시 호출된 결과를 호출한 페이지에서 합치는 것이라고 보는게 맞을 것 같습니다.

ps. 공부하는 단계에 정리하면서 글을 적다 보니 잘못알고 있는 내용이 있을수도 있습니다.
혹 잘못된 내용이라면 바른 내용을 알려주시면 정정하겠습니다.

posted by 뚱2