본문 바로가기
프로그래밍/JSP

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

by 가므자 2012. 3. 6.

액션 태그를 이용한 페이지 모듈화
-화면을 모듈화해서 코드가 중복되는 것을 방지

<jsp:include> 액션 태그
-형식: <jsp:include page ="포함할페이지" flush="true" />
- flush : true값을 주면 [출력내용A] 플러시(웹브러우저 보내기)한 뒤 to.jsp흐름이 이동 보통 false 값을 주는 것이 일반적이다.

질문 1) include 액션태그와 include 디렉티브의 차이점?
: include 액션 태그는 해당하는 페이지의 처리 결과를 포함시키지만 include 디렉티브는 해당하는 소스의 내용을 JSP페이에 포함을 시킨다.


<jsp:param> 액션 태그
<jsp:param> 액션 태그는 페이지 제어가 이동 할때 필요로 하는 데이터를 같이 포함해서 보낼때 사용한다. 따라서 제어가 이동한 Jsp 페이지에서 데이터(파라미터)를 불러 올 수 있다.

기본적인 사용 방법은 다음과 같다.


<jsp:param name="param1" value="value"/>

<jsp:param>액션태그는 페이지 이동시 다음 표와 같이 이동해야한다. 즉, 다른 액션태그(include, forward) 안에서 같이 무브해야 지만 유효하다.

<jsp:include page ="포함할페이지" flush ="true">

<jsp:param name="name" value="Jsp"/>

</jsp:include>

동작과정

<JSP:param> 태그는 기존 파라미터 값을 유지하고 값을 새로 추가한다.

<jsp:forward> 액션 태그

-형식 <jsp:forward page="이동할 페이지" />
-from.jsp가 아닌 to.jsp가 생성한 응답 결과가 웹브라우저에 전달한다.
-from.jsp에서 사용한 request, reponse 기본 객체가 to.jsp에 그대로 전달된다.

- 액션 태그는 요청 처리를 전달 할 때 사용한다. (간결하고 구조적으로 JSP 프로그래밍을 하기 위해)
- 요청 흐림이 이동할 때 전달하는 페이지의 request 기본 객체와 response 기본 객체가 전달받는 페이지로 전달됨
- 전달하는 페이지가 응답하는 것이 아니라 전달받는 페이지에서 생성한 응답 결과가 웹 브라우저에게 전달됨
- 각각의 조건을 처리하는 JSP를 분리시켜 기능별로 모듈화시키는 것이 목적

<jsp:forward> 액션태그와 출력버퍼와의 관계
- <jsp:forward>가 실행되면 기존의 출력버퍼를 모두 비우고(삭제) 전달받은 페이지의 새로운 내용을 버퍼에 삽입한다.
- 전달하는 페이지는 웹 브라우저에 전송되지 않는다.
- <jsp:forward> 액션 태그 뒤에 위치한 전달하는 페이지의 코드는 실행이 되지 않는다.
- 그러므로 출력 버퍼를 사용하지 않는 JSP 페이지에서는 이 액션 태그를 사용할 경우 에러가 발생할 가능성이 있다.
- JSP 규약에서 이미 웹 브라우저에 데이터가 전송된 경우 이 액션 태그를 사용해서 흐름을 이동할 수 없도록 규정함
- 또한 버퍼가 다 차서 버퍼의 내용을 이미 웹 브라우저에 전달한 경우도 이와 마찬가지로 규약에 따라 에러가 발생한다.

2008-07-23_10_39_47(1).jpg 

<jsp:forward>액션태그의 전형적인 사용법

2008-07-23_10_39_47(2).jpg

조건에 따라 서로 다른 결과 화면을 출력해야 할 경우 <jsp:forward>액션태그를 유용하게 사용할 수 있다.
파라미터를 받아서 파라미터의 조건에 따라 출력 결과를 다르게 하고 싶을때의 경우도 마찬가지다.

그렇다면 조건별로 분기하고 출력결과를 뿌려주는 페이지에 특정 파라미터도 넘길수 있지 않을까,
이동할 페이지에 특정 데이터를 넘기고 싶을때엔 다음 두가지 방법이 있다.

<jsp:forward>이동할 페이지에 정보 전달하기

◈ 파라미터 전달 방법

2008-07-23_10_39_47(3).jpg

값받기 : <%= request.getParameter("first")%>

◈ request 기본객체 속성 사용

2008-07-23_10_39_47(4).jpg

request 기본객체는 한번의 요청에 대해서 유효하게 동작하며, 앞에서 설명했듯이 한번의 요청을 처리하는데 사용되는 모든 JSP에서 공유된다. 위 그림과 같이 from.jsp는 <jsp:forward>액션태그를 사용해서 흐름을 to.jsp로 이동시키는데, 이때 한번의 요청을 처리하는데 rom.jsp와 to.jsp가 사용되며, 따라서 from.jsp와 to.jsp는 하나의 requeset 기본 객체를 공유하게 된다.

이 특징을 사용하여 공유된 기본객체의 속성을 추가하면 이동할 페이지에 정보를 전달한 효과를 보게 된다.

'프로그래밍 > JSP ' 카테고리의 다른 글

jsp로 mysql 데이터 삭제  (0) 2012.03.20
웹어플리케이션 폴더 추가하기  (0) 2012.03.06
기본객체와 영역  (0) 2012.03.06
필수 이해 요소  (0) 2012.02.28
response 기본객체  (0) 2012.02.28

댓글