JSP의 액션은 페이지의 요청을 이동시킬 때 사용하는 태그이다. 현재는 XML 형태의 문법만 지원한다.
*XML
- forward 액션
클라이언트에게 요청받은 페이지를 같은 서버 안의 다른 페이지로 요청을 넘겨주는 역할을 한다.
이때, 이렇게 요청이 넘어가는 것이 클라이언트측에는 전달되지 않는다. (=url 주소는 처음 요청한 페이지로 고정됨)
또한 forward 액션이 발생하게 되면, forward 액션 발생 이전의 컨텐츠, 즉 buffer에 있던 내용들은 전부 버려지고
forward 액션이 발생한 하위의 코드들은 실행되지 못한다.
<jsp:forward page="요청을 넘겨줄 페이지" />
forward 액션 발생시 제어가 옮겨지는 페이지에게 pageContext 객체를 새로 만들어주며
기존의 request, response, session과 같은 객체는 제어가 옮겨진 것과 관계없이 계속 유지된다.
번역된 데이터를 제어가 옮겨지는 페이지로 이동시키고 싶다면 request, sesison과 같은 객체에 setAttribute 메소드를 통해 데이터를 포함시켜주면 되며 forward 된 페이지에서는 자신에게 필요한 객체를 저장된 스코프의 범위에 따라 호출하여 사용하면 된다.
request 객체는 포워드 되기 전의 페이지의 것이 forward된 페이지로 이동하는 것이기 때문에 사용자의 요청 매개변수는 forward된 페이지에서 바로 사용할 수 있다. forward되는 페이지에 새로운 파라미터를 포함하여 forward 하고 싶다면
<jsp:param name="userParam_1" value="parameter_1" />
와 같은 문법을 이용해 파라미터를 이용시킬 수 있다.
forward 액션에는 스크립트릿을 사용할 수 있다.
<jsp:forward page='<%= request.getParameter("url" %>' />
와 같은 문법도 가능하다.
주의할 점은, forward 액션을 사용하기 전에는 절대로 출력 버퍼가 flush되면 안되는 것이다.
forward 액션이 작성된 문장의 뒤쪽에 있는 코드(database connection 자원 등)는 반드시 forward 태그 앞에 두어야 한다.
- include 액션
인클루드 액션은 현재 페이지에 다른 파일을 간접적으로 포함시키고자 할 때 사용하는 태그이다.
<jsp:include page="somePage.jsp" flush="true" />
이는 <%@ include file=" ~~~ " %> 와는 동작방식에서 완전히 다르다.
전자는 include 액션이라 부르고, 후자는 jsp의 include 지시자라고 부른다.
include 지시자는 주어진 파일을 현재 페이지에 직접적으로 포함시켜주는 역할을 한다.
따라서 인클루드 되는 페이지와 인클루드 하는 페이지 양쪽에 둘 수 없다.
인클루드 되는 파일이 인클루드 하는 파일의 일부분으로 포함되기 때문이다.
또한 html, jsp와 같은 파일들만 인클루드 할 수 있다.
include 액션은 forward 액션과 비슷하게, forward 액션은 자신에게 넘어온 요청을 forward 액션이 발생하는 시점에 포워딩 되는 페이지로 요청을 완전히 넘겨주는데, 인클루드 액션도 여기까지 동일하게 작동한다.
하지만 인클루드 액션은 인클루드 액션에 의해 넘어간 요청이 해당 페이지의 번역이 끝났다면 다시 원래의 페이지로 요청이 전달되게 된다.
정리하자면 요청이 잠깐 다른 페이지로 넘어갔다가 다시 원래의 페이지로 되돌아오게 된다는 것이다.
- param 액션
<jsp:forward> 액션 태그로 이동하는 페이지에 정보를 추가하고 싶을 경우에 사용하는 태그이다.
<jsp:param> 태그는 요청한 페이지로 정보를 전달할 때 사용하며, 단독으로 사용하지 못하고 <jsp:include>나 <jsp:forward> 태그의 내부에 기술하여 사용한다.
<jsp:param name="파라미터" value="파라미터값" />
'JSP' 카테고리의 다른 글
[JSP] (7)Java Beans 컴포넌트 (0) | 2022.05.09 |
---|---|
[JSP] (6)쿠키와 세션 (0) | 2022.05.08 |
[JSP] (4)JSP 내장객체 (0) | 2022.05.02 |
[JSP] (3)JSP의 이해 (0) | 2022.04.27 |
[JSP] (2)JSP 태그 (0) | 2022.04.26 |