본문 바로가기
프로그래밍 놀이터/Web

Chap 07. 페이지 모듈화와 요청 흐름 제어

by 돼지왕 왕돼지 2015. 1. 9.
반응형

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 객체에 값을 넣어 전달하는 것이 좋다.







반응형

댓글