JSP(JavaServer Page)

JSP(JavaServer Page) - 6 : 액션 (include action, forward action)

n.han 2016. 7. 26. 23:03

- 액션, include action, forward action


액션은 JSP 주요 구성 요소 중 하나로 JSP 페이지 간 흐름 제어,


자바 빈즈 컴포넌트와 JSP 상호 작용 지원과 같은 기능을 지원한다.


JSP 액션의 태그의 종류는 여러 가지가 있지만, 대표적으로 include, forward, useBean이 있다.


1. include action


include 액션은 다른 파일을 불러 온다는 측면에서 include 지시어와 개념이 유사하다. 


하지만 include 지시어는 해당 파일을 포함시킨 후 컴파일하는 것에 비해,


include 액션은 실행 시점에서 해당 파일을 호출하여 그 결과를 포함한다.


즉, include 액션은 각각의 파일을 따로 컴파일해서 관리하기 때문에


동적인 페이지를 포함시킬 경우에 사용하는 것이 좋다.


또한 include 액션의 특징 중 하나는 동적으로 include 액션을 실행 시,


request에 파라미터 값들을 전달할 수 있다는 점이다.


다음은 include 액션과 파라미터를 전달하는 syntax와 그 예제이다.


<jsp:include page="포함할 파일 이름">


          <jsp:param name="파라미터 이름" value="파라미터 값"/>


</jsp:include>





2. forward 액션


forward 액션은 완전히 다른 페이지로 전환할 때 사용한다.


forward 액션의 특징은, forward action은 서버 내부적으로 페이지 흐름이 제어되는 것이기 때문에


클라이언트가 forward 되었는 지 알지 못한다. 이 특징은 후에 기술할 redirection과의 차이점이다.


forward 액션은 페이지를 완전히 다른 페이지로 전환하므로,


forward하는 페이지는 웹 페이지를 구성하는 데 필요한 요소들이 모두 존재해야 한다. (include는 컨텐츠만을 작성한 것을 기억하자)


또한 그 전 request, response 객체가 그대로 forward되므로 최초 요청에 탑재된 파라미터들이 유지가 되며


별도로 forward 액션이 발생할 때 파라미터 값을 넘길 수 있다.


정리하자면


1) forward는 다른 페이지로의 전환이므로, 그전 페이지의 내용은 버퍼가 auto flush되지 않는 한 클라이언트에게 전송되지 않는다.


2) 최초 요청 시 파라미터뿐만 아니라, forward action 발생 시 별도의 파라미터를 추가로 전송할 수 있다.


3) 서버 내부의 페이지 흐름 제어이기 때문에 클라이언트가 forward 사실을 알지 못한다.


다음은 forward 액션과 파라미터 전송과 관련된 syntax와 그 예제이다.


forward_action.jsp => footer.jsp로 forward되었지만,


클라이언트에게 보여지는 URL은 여전히 forward_action.jsp인 것을 볼 수 있으며, 


forward_action.jsp의 내용이 클라이언트에게 보여지지 않는 것을 확인할 수 있다.


또한 초기 forward_action.jsp에 GET 방식으로 보낸 tel 파라미터가 자동적으로 footer.jsp의 request에 


파라미터로 포함되어 있음을 알 수 있다.


<jsp:forward page="forwardjsp 파일">


    <jsp:param name="파라미터 이름" value="파라미터 값"/>


</jsp:forward>