본문 바로가기

JSP

<jsp:include page=...>과 <@include file=...>의 차이

<jsp:include page 는 자주 사용하지 않았습니다.
그냥 asp 때의 습관대로 <%@ include 를 많이 사용했죠.
<%@ include file 을 사용했을 때는 번번이 include 되는 파일이 변경된 때마다 서버의 캐시를 지웠다가 다시 로딩하고 해야했는데...즉 상위파일을 touch(변경) 시켜서 강제로 컴파일이 다시되게 해야함
<jsp:include page 는 매번 다시 컴파일 되어집니다.

<%@ include file="파일의 위치(url)" %>는 jsp 파일이 자바파일로 바꿀때
자바문서에 삽입되어 컴파일 되는것이고
<jsp:include page=파일 />은 자바로 바뀌고 컴파일이후 실행중에 값이 들어간다
이 정도 입니다


include file 은 상위파일에서 쓰던 변수를 그대로 사용할 수 있고
include page 는
<jsp:include page="a.jsp" flush="true">
<jsp:param name="abc" value="<%=abc%>"/>
</jsp:include>
이런식으로 useBean에서 파라미터 넘기는것 처럼.. 사용합니다..

해당 a.jsp 에서 받을때는 request.getParameter("abc")와 같이 받고요..



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 는 해당 파일이 수정되는 경우 다시 컴파일이 진행된다.




                  <%--@include file="/subject/include/applicationTitle.jsp"--%>
                  <jsp:include page="/subject/include/applicationTitle.jsp" flush="true">
                    <jsp:param name="btnNO" value="0"/>
                    <jsp:param name="subjectSN" value="<%=subjectSN%>"/>
                    <jsp:param name="subjectStatusCD" value="<%=subjectStatusCD%>"/>
                  </jsp:include>