반응형
include 에는 크게 2가지가 있습니다. 잘 아시는 <%@ include file="" %> 과 조금은 낯선 <jsp:include page="" flush="true"/> 입니다. 일단 3개의 파일을 먼저 보겠습니다. |
ok.jsp<%@ page contentType="text/html;charset=euc-kr"%><% String ab="파일 ok.jsp 입니다."; %><%=ab%> <br> <%@ include file="okD.jsp" %> <br> <jsp:include page="okA.jsp" flush="true"/> |
unix 계열에서 돌아갈 경우 소스입니다. 한글 때문에 한번더 꽈줍니다. okD.jsp<% String abc="파일 okD.jsp 입니다."; %><%=new String(abc.getBytes("8859_1"),"euc-kr")%> <br><%=new String("HTML 텍스트입니다.".getBytes("8859_1"),"euc-kr")%> <br> |
환경(jsp엔진)에 따라 아래처럼 인코딩을 없애줘도 됩니다. 재수가 좋은 경우죠 (okD.jsp)<% String abc="파일 okD.jsp 입니다."; %><%=abc%> <br>HTML 텍스트입니다. <br> |
page Directive로 charset을 정해주어야 한글이 깨지지 않습니다. okA.jsp<%@ page contentType="text/html;charset=euc-kr"%><% String abc="파일 okA.jsp 입니다."; %><%=abc%> <br> <br> |
파일 3개를 저장하시고, 브라우저에서 http://localhost:8080/ok.jsp 로 실행해보십시오. 물론 기본디렉토리에 위치시켜야죠. 이거 질문하는 분들 장난아니게 많습니다. tomcat 의 경우 server.xml 을 변경하지 않고 bin/startup.bat (startup.sh) 를 실행하셨다면 webapps/ROOT/ 가 기본디렉토리입니다. resin 의 경우는 doc 디렉토리가 기본 디렉토리겠죠. apache 랑 연동했을 경우 apache의 DocumentRoot 를 톰캣의 c:/jakarta-tomcat/webapps/ROOT 로 맞춰주시는 것이 헷갈리지 않을 겁니다. |
include Directive 는 <%@ ... %> 로 싸여있습니다. @은 Directive 라는 의미죠. 포함하는 문서에 정적으로 컴파일 됩니다. 포함하는 파일(ok.jsp)에서 사용한 변수를 따로 선언하지 않고 바로 사용할 수 있습니다. 물론 여기(okD.jsp)에서 선언된 변수도 포함하는 파일(ok.jsp)에서 따로 선언하지 않고 사용할 수 있습니다. 대신 이 파일(okD.jsp)을 변경할 경우 포함하는 파일(ok.jsp)의 시스템 날짜를 변경해서 재컴파일을 유도해야 이 파일(okD.jsp)의 변경사항이 적용되는 것을 볼 수 있습니다. |
include Action은 xml 형식으로 <jsp:include page=... flush="true" /> 를 사용합니다. flush="true" 는 그냥 쓰십시오 false로 바꾼다거나 빼먹거나 하면 안됩니다. 묻지 마십시오. 다칩니다. (==O%TT; 퍽!) |
include Action은 동적이라고 합니다. 처음엔 저도 이해가 안 갔습니다. 하지만 쓰면서 이 넘이 얼마나 독립적인지 아주 잘 알게 되었고, 왠만한 경우 저는 directive 보다는 action 을 사용합니다. 이 넘은 포함하는 파일과 상관없이 실행이 됩니다. directive 의 경우 ok.jsp와 okD.jsp 의 소스가 합져져서 하나로 컴파일되어 동작하는 것과 같지만 action 의 경우 ok.jsp 컴파일하고 okA.jsp 따로 컴파일되어서 ok.jsp가 okA.jsp를 호출해서 사용하고 다시 ok.jsp가 동작하는 구조라고 생각하시면 될 것입니다. (죄송합니다만 제가 경험상 체득한 것이라 검증이 필요한 부분입니다.) |
include Action 에는 page directive가 있습니다. include directive 에는 Page directive 가 없습니다. 만일 okD.jsp 에 <%@ page contentType="text/html;charset=euc-kr"%> 를 넣는다면 contentType="text/html;charset=euc-kr" 가 두개가 되기 때문에 Page directive: can't have multiple occurrences of contentType 라고 Exception 메시지를 보실 수 있습니다. import 속성이 틀리다면 contentType="text/html;charset=euc-kr" 만 삭제해주시면 될 것입니다. (이것도 자주 질문 하시는 것 중의 하나입니다.) |
파일을 변경해보겠습니다. (ok.jsp) 는 ok.jsp<%@ page contentType="text/html;charset=euc-kr"%><% String ab="파일 ok.jsp 입니다."; %><%=ab%> <br>HTML 텍스트입니다. <br> <br> <%@ include file="okD.jsp" %> <br> <jsp:include page="okA.jsp" flush="true"> <jsp:param name="ab" value="<%=ab%>"/> </jsp:include> |
okD.jsp<% String abc="파일 okD.jsp 입니다."+"###"+ab; %><%=new String(abc.getBytes("8859_1"),"euc-kr")%> <br><%=new String("HTML 텍스트입니다.".getBytes("8859_1"),"euc-kr")%> <br> |
okA.jsp<%@ page contentType="text/html;charset=euc-kr"%><% String ab =request.getParameter("ab"); String abc="파일 okA.jsp 입니다."+"###"+ab; %><%=abc%> <br> <br> |
이해가 가실라나요? 변수전달방법입니다. Action 에 대해서 좀더 살펴봐야 할 것이 있습니다. 잠시 커피좀... |
관련 사이트 |
■http://aboutjsp.com/lec/include.htm hsboy님의 include 강좌 |
반응형
'웹프로그램' 카테고리의 다른 글
Java로 구현하는 간단한 Client & Server 프로그램 (0) | 2009.06.09 |
---|---|
JSP 페이지 이동 4가지 방법 및 특성 (0) | 2009.06.09 |
JPG 저장된 DB 이미지 JSP로 보여주기 (0) | 2009.06.09 |
JSP 폼메일 예제 (0) | 2009.06.09 |
JSP 오라클8i 글자수 무제한 게시판소스 (0) | 2009.06.09 |
JSP 동적 이미지(실시간 그래프) 생성하기 (0) | 2009.06.09 |
JSP UTF-8로 파일 저장하기 (0) | 2009.06.09 |
JSP 파일 업로드 (0) | 2009.06.09 |