코드일기장

[JSP] forward, include 액션 태그 본문

JSP

[JSP] forward, include 액션 태그

won_hyeok2 2022. 8. 4. 16:17

 

 

🎈 forward 액션 태그

 

  forward 액션 태그는 현재 JSP 페이지에서 다른 페이지로 이동하는 태그이다. 현재 JSP 페이지에서 forward 액션 태그를 만나면 그전까지 출력 버퍼에 저장되어 있던 내용을 모두 삭제한다. 그리고 설정된 forward 액션 태그의 page 속성 값의 설정 페이지로 프로그램의 제어가 이동된다.

 

<jsp:forward page="파일명"/>  <<---- XML 형식
<jsp:forward page="파일명"></jsp:forward>  <<---- HTML 형식

    액션 태그의 형식이다. 액션 태그는 반드시 끝나는 태그가 존재해야 한다.

 

 

  page 속성 값은 현재 JSP 페이지에서 이동할 페이지의 외부 파일명이다. 외부 파일이 현재 JSP 파일과 같은 디랙터리에 존재하면 파일명만 설정하고 다른 디렉터리에 존재하면 URL(또는 상대 경로)을 설정해야 한다.

 

 


  다음은 forward 예제 코드이다.

 

 

[first.jsp]

<%@ page contentType="text/html"; charset="utf-8"%>
<html>
<head>
<title>JSP forward 연습</title>
</head>

<body>
	<h3>현재 페이지는 first.jsp입니다.</h3>
    <jsp:forward page="second.jsp"/>
    <p>
    	=====first.jsp 페이지=====
    </p>
</body>

</html>

  

 

[second.jsp]

<%@ page contentType="text/html"; charset="utf-8"%>
<html>
<head>
	<title>second.jsp 파일입니다.</title>
</head>
<body>
	<h3>이 파일은 second.jsp 입니다.</h3>
    Today is : <%=new java.util.Date()%>
</body>
</html>

 

first.jsp 파일 실행 결과

 

  웹 브라우저 실행 결과를 보면 브라우저가 요청한 first.jsp 파일 내용은 존재하지 않는다. seond.jsp 파일 내용만 존재한다. 하지만 웹 브라우저의 주소 경로는 first.jsp이다. first.jsp가 forward 액션 태그를 만나 first.jsp의 출력 버퍼 내용을 모두 삭제하여 내용이 존재하지 않는 것이다.

 

 

 

 

 

 

  forward 액션 태그의 주의점은 다음과 같다.

웹 서버는 forward 액션 태그를 수행할 때 출력 버퍼를 지우므로  현재 페이지에서 forward 액션 태그가 선언된 지점 이전 HTML 코드는 손실된다. 

 

 

 


 

 

🎈 include 액션 태그

 

  include 액션 태그는 include 디렉티브 태그와 기능이 매우 비슷하다. 사용법도 비슷하다. 현재 JSP 페이지에서 특정 영역에 외부 파일의 내용을 포함시키는 것은 디렉티브나 액션이나 동일하게 적용된다. 

 

<jsp:include page="파일명"  flush="false"/>

    page 속성 값으로 외부 파일을 설정한다. 같이 디렉터리의 외부 파일이면 파일명만, 그렇지 않다면 전체 경로를 적어준다. 

  flush 속성 값은 디폴트가 false이다. true로 속성 값을 지정하면 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금까지 출력 버퍼에 저장된 내용을 웹 브라우저에 출력하고 출력 버퍼를 비운다. 

 

 

  일반적으로 flush 속성 값은 false로 지정하는 것이 좋다. true로 지정하면 출력 버퍼를 웹 브라우저에 전송하는데 이때 헤더 정보도 같이 전송된다. 웹 브라우저에 전송되고 나면 헤더 정보를 추가해도 결과에 반영되지 않는다.

 

 

  

  include 액션 태그와 디렉티브 태그는 외부 파일을 포함시킨다는 점이 비슷하지만 포함된 외부 파일이 실행된 후 현재 JSP 페이지로 제어를 반환한다는 것이 가장 큰 차이점이다. 또한 JSP 컨테이너가 include 액션 태그를 만나면 include 액션 태그에 설정된 외부 파일의 실행 내용이 현재 JSP 페이지의 출력 버퍼에 추가 저장되어 출력된다.

 

 

 

  <표 1.> include 액션 태그와 include 디렉티브 태그의 차이

구분 include 액션 태그 include 디렉티브 태그
처리 시간 요청 시 자원을 포함한다. 번역 시 자원을 포함한다.
기능 별도의 파일로 요청 처리 흐름을 이동한다. 현재 페이지에 삽입한다.
데이터 전달 방법 request 기본 내장 객체나 param 액션 태그를 이용하여 파라미터를 전달. 페이지 내의 변수를 선언한 후 변수에 값을 저장한다.
용도 화면 레이아웃의 일부분 모듈화할 때 주로 사용 다수의 JSP 웹 페이지에서 공통으로 사용되는 코드를 포함하는 경우 사용
기타 동적 페이지에 사용 정적 페이지에 사용

 

  

  다음은 include 액션 태그 예제 코드이다.

 

 

[firstinclude.jsp]

<%@ page contentType="text/html"; charset="utf-8"%>
<html>
<head>
	<title>Action Tag</title>
</head>
<body>
	<h3>현재 페이지는 firstinclude.jsp 파일입니다.</h3>
    <jsp:include page="secondinclude.jsp/>
    <p>Java Server Page</p>
</body>
</html>

 

 

 

[secondinclude.jsp]

<%@ page contentType="text/html"; charset="utf-8"%>
<html>
<head>
	<title>Action Tag</title>
</head>
<body>
	<h3>현재 페이지는 secondinclude.jsp 파일 입니다.</h3>
   	 Today is : <%= new java.util.Date()%>
</body>
</html>

 

 

firstinclude.jsp 파일 실행 결과

 

 

'JSP' 카테고리의 다른 글

[JSP] include 디렉티브 태그의 기능과 사용법  (0) 2022.07.21
[JSP] request 기본 객체  (0) 2022.03.07
[JSP] 스크립트 요소  (0) 2022.03.01
[JSP] page 디렉티브  (0) 2022.02.28
[JSP] JSP에서 HTML 문서 생성하는 기본 구조  (0) 2022.02.28
Comments