<jsp:include> 액션태그는 지정한 페이지를 태그가 위치한 부분에 포함시킬 때 사용된다.
1.<jsp:include> 액션태그
<jsp:include> 액션태그를 만나면 요청흐름은 해당 페이지로 이어져 넘어가게 되고 페이지가 끝나면 다시 원래 페이지로
요청흐름은 돌아오게 되며 현재 위치에 하위 파일의 결과를 포함시킨다.
<jsp:include page="sub.jsp" flush="false" />
<jsp:include> 액션태그를 사용할 때 flush 여부를 설정할 수 있는데 요청흐름이 넘어가면서 현재까지 페이지의 결과를
출력할 것인지 말 것인지 결정하는 것이다. flush를 true로 한다면 요청이 넘어가면서 현재까지 출력버퍼에 저장된 내용을
출력하고 sub.jsp에서 생성된 결과는 새로 출력버퍼에 저장될 것이다. 하지만 flush를 false로 하는 경우 현재까지 출력버퍼에
저장된 결과물을 유지하고 sub.jsp에서 생성한 결과를 출력버퍼의 뒤에 그대로 이어 붙이고 이후 다시 메인페이지로 돌아와
생성되는 출력결과도 그 뒤를 이어 출력버퍼에 이어져 저장된다.
주로 <jsp:include>액션태그는 중복되는 영역의 처리를 위해 사용된다. 우리가 흔히 보는 홈페이들을 보면 상단 하단
좌측 또는 우측, 하단 등 중복되는 모습을 보여주는 경우가 많다. 그럴 때 마다 매번 동일한 코드를 작성하고 동일한 파일을
생성해서 지정한다면 개발효율성이 떨어지므로 상단, 하단, 좌측등 미리 만들어진 하나의 파일을 해당 레이아웃에 삽입만
하면 중복된 코드를 줄이고 반복되는 페이지를 동일하게 출력할 수 있게 된다.
<jsp:include page="/subPage/top.jsp" flush="false" /> … … <jsp:include page="/ subPage /bottom.jsp" flush="false" />
위와 같은 방법으로 페이지 상단, 하단이 동일한경우에 태그를 사용하여 코드의 중복을 최소화 할 수 있다.
2.<jsp:param>을 통한 파라미터 전달.
<jsp:include> 액션태극 사용하면서 sub페이지에 요청을 넘겨줄 때 <jsp:param>액션태그를 통해서 파라미터를 넘겨줄 수 있다.
<% request.setCharacterEncoding("euc-kr"); %> <jsp:include page="sub.jsp" flush="false"> <jsp:param name="coundtry" value="KOREA" /> </jsp:include>
위와 같은 방법으로 파라미터 이름이 country이고 값이 KOREA인 파라미터를 넘겨준다. 단, 캐릭터셋 인코딩을 미리 지정해주어야
올바른 값으로 파라미터를 인코딩하여 넘겨준다.
한가지 주의할 점은 요청이 넘어가므로 기존페이지의 파라미터를 그대로 사용할 수 있지만 <jsp:param>액션태그를 통해
동일한 이름은 country로 파라미터를 넘겨주는 경우 기존페이지의 파라미터를 Overwrite하는 것이 아니라 동일한 이름의
파라미터로 값을 추가하여 생성한다. 그래서 하위 페이지에서 request.getParameter("country") 할 경우 <jsp:Param>에서
추가한 내용을 불러오는데 그 이유는 <jsp:param>을 통해 넘겨준 파라미터가 하위 페이지에서는 우선시 되기 때문이다.
반면 request.getParameterValues("country") 하는 경우 메인페이지의 파라미터 값과 <jsp:param>을 통해 넘어온 값 모두
리턴된다. 하지만 메인페이지에서는 <jsp:param>통해 생성된 파라미터에는 접근할 수 없다.
3.<%@ include file="#$%.jspf" %> 디렉티브를 이용한 중복코드 삽입.
<jsp:include>외에 include디렉티브를 사용해서도 중복된 코드를 줄이는 것이 가능하다.
다른점이라는 <jsp:include>는 요청흐름을 넘겨서 해당 결과를 현재 결과에 포함시키지만 include디렉티브는 해당페이지의
코드를 현재페이지에 포함시켜 컴파일할 때 함께 번역하여 결과를 생성한다는 것이다.
<%@ include file="/includeSub.jspf" %>
위 파일은 include디렉티브가 수행되는 위치에 코드가 포함되어 함께 컴파일된 결과를 출력하도록 된다.
<jsp:include>액션태그가 레이아웃의 한 구성 요소를 모듈화하기 위해 사용되는 반면 include디렉티브는 모든 JSP에서 사용되는
공통변수를 정의하거나 저작권 표시와 같은 중복되는 문장을 처리할 때 주로 사용된다.
4. <jsp-property-group> 코드조각 자동포함 시키기
JSP 2.0 버전부터 include디렉티브를 사용하지 않고도 JSP의 앞뒤에 지정한 파일을 삽입하는 기능을 제공한다.
web.xml 파일을 수정하여 중복되는 코드의 처리를 할 수 있다.
<jsp-config> <jsp-property-group> <url-pattern>/default/*</url-pattern> <include-prelude>/include/top.jspf</include-prelude> <include-coda>/include/bottom.jspf</include-coda> </jsp-property-group> </jsp-config>
<include-prelude>는 JSP파일의 앞에 자동으로 삽입.
<include-coda>는 JSP 파일의 뒤에 자동으로 삽입된다.
만약 <jsp-property-group>을 두번 사용한다면 순차적으로 적용된다.
<jsp-config> <jsp-property-group> <url-pattern>/default/*</url-pattern> <include-prelude>/include/top.jspf</include-prelude> <include-coda>/include/bottom.jspf</include-coda> </jsp-property-group> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <include-prelude>/include/top2.jspf</include-prelude> <include-coda>/include/bottom2.jspf</include-coda> </jsp-property-group> </jsp-config>
위처럼 설정되어 있는 경우 /default/HelloWorld.jsp 를 실행하면
top.jspf (삽입)
top2.jspf(삽입)
….
….
bottom.jspf(삽입)
bottom2.jspf(삽입)
처럼 순차적으로 적용된다.
'web > jsp' 카테고리의 다른 글
JSP Cookie 쿠키 (0) | 2014.09.08 |
---|---|
JSP <jsp:forward> 액션 태그, JSP 페이지 이동 (0) | 2014.09.08 |
JSP 기본객체의 속성(Attribute) (0) | 2014.09.08 |
JSP 기본(내장) 객체와 영역 (0) | 2014.09.08 |
JSP application 기본(내장)객체 (0) | 2014.09.08 |