include file와 include page의 차이
(10.06)
회사에서 체크아웃한 프로젝트를 동작하기 위해서 경로를 다시 설정해주고 서버를 올렸는데 모듈이 동작하지 않는다.
사수님의 PC에서도 만찬가지로 같은 현상이 나타났고 함께 해결하기 위해 코드를 분석했다.
문제는 include 부분에서 발견할 수 있었다.
체크아웃한 프로젝트는 include file를 사용하고 있었고 include file의 특징은 include 되는 파일이 변경된 때마다 프로젝트를 Clean을 해줘야한다. 즉 include되는 파일의 상위 파일을 touch(변경) 시켜서 컴파일이 되도록 해야하는 것이다.
그러므로 나와 사수님이 프로젝트를 체크아웃하여 경로를 재설정하고 서버를 올려도 변경된 내용이 컴파일되지 않아 모듈이 동작하지 않았던 것이다.
include page는 서비스할 때마다 컴파일이 되어 따로 상위 파일을 touch(변경)하지 않아도 된다.
이후 경로설정의 상위 파일을 touch(변경)하여 모듈이 정상적으로 작동함을 확인했다.
아래는 include file와 include page의 차이가 궁금해져서 찾은 내용이다.
1. 정적인 include 지시문의 예 : <%@include file="/jsp/common/session.jsp"%>
정적이란 단어에 이미 모든 의미가 함축되어 있다. jsp 파일이 java 파일로 수정되기 전에 session.jsp 파일의 모든 내용이 부모의 jsp 로 include 된다. 그 후에 부모의 jsp 는 java -> class 파일-> html 문서 -> 웹 브라우저로 랜더링 된다. 따라서 session.jsp 파일 안에서 전역변수로 String greeting = "Hello Wordl"; 라고 정의했다면 session.jsp 를 사용하는 부모 jsp 에서는 서브릿 태그(<%%>) 에서 컴파일 에러 없이 바로 greeting 변수를 사용할 수 있다.
2. 동적인 include 지시문의 예 :
<jsp:include page="/jsp/common/uppermenu.jsp" flush="true">
</jsp:include>
동적이란 단어에 이미 모든 의미가 함축되어 있다. uppermenu.jsp 는 부모 jsp 가 java->class -> html 문서로 수정되어 실행되어질 시점에 삽입 된후 웹 브라우저로 랜더링 된다. 즉 정적 include 지시자 처럼 uppermenu.jsp 안에서 서브릿 태그를 선언하고 전역변수를 만든후에 부모 jsp 에서 그 변수를 사용할 수 없다. 동적 jsp 는 해당 파일이 수정되는 경우 다시 컴파일이 진행된다.