Chap 07. 페이지 모듈화와 요청 흐름 제어
* <jsp:include> 액션 태그를 이용한 페이지 모듈화.
지정한 페이지를 태그가 위치한 부분에 포함시킬 떄 사용된다.
-
<jsp:include> 액션 태그 사용법
<jsp:include page="포함할 페이지" flush="true"/>
-
<jsp:param> 을 이용해서 포함될 페이지에 파라미터 추가하기
<jsp:include page="/test.jsp" flush="false">
<jsp:param name="param1", value="value1" />
<jap:param name="param2", value="<%= value2 %>" />
</jsp:include>
jsp:param 을 통해 추가된 parameter 는 request 객체를 통해 받아올 수 있다.
<jsp:param> 을 통해 전달하는 key-value pair 는 include 되는 page 에서만 유효하다.
만약 jsp:include 를 호출하는 jsp 의 request 에 동일한 key 를 가진 녀석이 있다면, jsp:param 은 set 이 아닌 add 의 개념으로 key-value 가 추가된다. 예를 들어 중복된 key 가 param1 일 경우 reqeust.getParameter( "param1" )을 호출하면 jsp:param 이 우선하여 여기서 정의한 녀석이 return 되지만, request.getParameterValues("param1")을 호출할 경우 기존값과 jsp:param 으로 추가한 값 2개가 모두 표시된다.
* include 디렉티브를 이용한 중복된 코드 삽입
include 디렉티브도 <jsp:include>와 마찬가지로 지정한 페이지를 현재 위치에 포함시켜주는 기능을 제공한다.
<jsp:include>의 경우 다른 JSP 로 흐름을 이동시켜 그 결과물을 현재 위치에 포함시키는 방식인 반면,
include 디렉티브는 다른 파일의 내용을 현재 위치에 삽입한 후에 JSP 파일을 자바 파일로 변환하고 컴파일 하는 방식.
-
include 디렉티브의 처리 방식과 사용법
<%@ include file="포함할 파일" %>
include 를 하게 되면 JSP 코드를 서블릿 클래스로 컴파일해버린다.
보통 include 대상이 되는 파일의 확장자는 jspf ( jsp fragment ) 로 사용한다.
includee 인 jspf 파일과 includer 인 jsp 파일의 contet-type 이 일치해야 제대로 include 된다.
-
include 디렉티브의 활용
jsp:include 의 경우 레이아웃의 한 구성 요소를 모듈화하기 위해 사용되는 반면, include 는 다음의 용도로 보통 사용된다.
1. 모든 JSP 페이지에서 사용되는 변수 지정
2. 저작권 표시와 같은 간단하면서도 모든 페이지에서 중복되는 문장.
-
코드 조각 자동 포함 기능
JSP 2.0 버전부터 include 디렉티브를 사용하지 않고도 JSP 의 앞, 뒤에 지정한 파일을 삽입하는 기능을 제공하고 있다.
web.xml 에 다음과 같이 설정해주면 된다.
<jsp-config>
<jsp-property-group>
<url-pattern>/view/*</url-pattern>
<include-prelude>/common/variable.jspf</inlcude-prelude>
<include-coda>/common/fotter.jspf</include-coda>
</jsp-property-group>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/common/variable2.jspf</inlcude-prelude>
<include-coda>/common/fotter2.jspf</include-coda>
</jsp-property-group>
</jsp-config>
여러개의 jsp-property-group 을 지정한 경우 정의한 순서대로 우선순위가 적용된다.
-
<jsp:include> 액션 태그와 include 디렉티브의 비교
<jsp:include>
요청 시간에 처리
별도의 파일로 요청 처리 "흐름"을 이동
requeest 기본 객체나 <jsp:param>을 이용한 파라미터 전달
화면의 레이아웃의 일부분을 모듈화할 때 주로 사용
<%@include %>
JSP 파일을 자바 소스로 변환할 때 처리
현재 파일에 삽입하는 형태
페이지 내의 변수를 선언한 후, 변수에 값 저장
다수의 JSP 페이지에서 공통으로 사용되는 변수를 지정하는 코드나 저작권 같은 문장을 포함.
* <jsp:forward> 액션 태그를 이용한 JSP 페이지 이동
하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 사용된다.
요청 처리가 전달될 때 request, response 객체가 전달된다.
이 때 forward 를 호출한 녀석이 print 한 모든 내용은 제거된다. ( buffer 가 비워진다. )
forward 를 통해 이동된 페이지에서 response 를 처리하여 브라우저에 전달한다.
보다 간결하고 구조적인 JSP 프로그래밍을 하기 좋다.
forward 를 시용할 경우 브라우저의 주소가 변하지 않는다.
forward 를 알 수 없다. seamless 하다.
-
<jsp:forward> 액션 태그의 사용법
<jsp:forward page="이동할 페이지" />
or
<jsp:forward page="<%=이동할 페이지%>" />
-
<jsp:forward> 액션 태그와 출력 버퍼와의 관계
forward 를 호출하는 순간, 호출하는 쪽의 buffer 가 clear 된다.
호출하는 녀석이 버퍼를 사용하지 않는다면 에러가 발생할 수 있다. ( @page buffer="none" 의 경우 )
-
<jsp:forward> 액션 태그의 전형적인 사용법
if 문을 통해서 페이지 분기를 할 떄 주로 사용된다.
-
<jsp:param> 액션 태그를 이용해서 이동할 페이지에 파라미터 추가하기.
<jsp:include> 와 동일하게 작동한다. <jsp:forward> 태그의 child 로 정의된다.
* <jsp:include>/ <jsp:forward> 액션 태그 page 속성의 경로
include 와 forward 는 page 속성을 사용해서 포함시키나 이동할 경로를 입력한다.
/ 로 시작하면 웹 어플리케이션 디렉터리를 기준으로 한 절대 경로가 되고,
그렇지 않으면 현재 JSP 페이지를 기준으로 한 상대 경로가 된다.
* 기본 객체의 속성을 이용해서 값 전달하기.
<jsp:param>액션 태그는 파라미터를 이용해서 데이터를 추가하기 떄문에 String 타입만 전달할 수 있다는 제약이 있다.
<jsp:include>, <jsp:forward> 모두 request, response 를 함꼐 전달하기 떄문에
String이 아닌 type 의 경우 기본 request, response 객체에 값을 넣어 전달하는 것이 좋다.
'프로그래밍 놀이터 > Web' 카테고리의 다른 글
Chap 09. 클라이언트와의 대화 1 : 쿠키 (0) | 2015.01.11 |
---|---|
Chap 08. 에러 처리 (0) | 2015.01.10 |
Chap 06. 기본 객체와 영역 (0) | 2015.01.06 |
Chap 05. 필수 이해 요소 (0) | 2015.01.04 |
Chap 03. JSP 로 시작하는 웹 프로그래밍 (0) | 2015.01.03 |
댓글