📌액션 태그란?
액션 태그란 JSP 페이지에서 Java 코드 등의 스크립트 언어를 사용하지 않고도 ( HTML 태그 형태로 ) 다른 페이지의 서블릿이나 자바빈의 객체에 접근할 수 있도록 태그를 이용해 구현된 기능을 말한다.
액션 태그를 통해서 개발자는 페이지의 흐름을 제어하거나 자바빈의 속성을 읽고 쓰며 애플릿을 사용하는 등의 다양한 기능을 활용할 수 있다. 또한 이런 기능들은 스크립틀릿 등의 스크립트 요소(자바 코드)를 사용하지 않기 때문에 개발자는 JSP 페이지의 내부적인 프로그램 로직을 사용자로부터 감출 수가 있다. 이 말은 즉, 액션 태그를 사용하면 사용자에게 보여지는 프레젠테이션 부분과 사용자의 요청을 처리하는 비즈니스 로직 부분(프로그램 부분)을 분리하는 것이 가능하다는 것을 의미하며, 웹 프로그래밍에 있어서 이러한 프레젠테이션 부분과 비즈니스 로직 부분의 분리는 프로그램 재사용성을 높여주고 코드의 간셜성을 향상시킨다.
📌액션 태그 종류
- 페이지 흐름 제어 액션(forward/include 액션)
- 자바빈 사용 액션(useBean 액션)
- 애플릿 사용 액션(plugin 액션)
페이지 흐름 제어 액션 위주로 설명을 하고 자바빈 사용 액션 부분은 JavaBean 포스팅 할 때 따로 하도록 하겠다.
💡forward 액션 태그
<jsp:forward page="이동할 페이지" />
<jsp:forward page="이동할 페이지"></jsp:forward>
(액션 태그는 XML 문법을 이용하여 구현된 기능이므로 태그의 끝에 종료 태그가 있어야 하며, 단독으로 태그가 쓰이더라도 마지막에 /을 넣어줘야 한다.)
forward 액션은 내장 객체 중 pageContext 내장 객체의 forward() 메서드가 태그로 구현된 기능이다. 따라서 forward 액션은 현재 페이지의 요청과 응답에 관한 처리권을 page 속성에 지정된 이동할 페이지로 영구적으로 넘기는 기능을 한다.
(원래 페이지에서 생성된 request 객체와 response 객체가 그대로 넘어간다는 것을 의미한다. 따라서 request에 지정한 속성들은 포워딩된 페이지에서도 그대로 사용할 수 있다.)
이때 이동하기 전의 페이지에 대한 모든 출력 버퍼의 내용은 버리고 이동한 페이지가 요청을 처리하여 응답이 완료되면 원래 페이지로 제어권이 돌아가지 않고 그 상태에서 모든 응답이 종료 된다.
- 이동할 페이지를 적을 때 주소는 동일한 웹 어플리케이션의 컨텍스트 루트를 기준으로 한 절대 경로나 상대 경로로만 지정이 가능하다.
- forward 태그를 사용하여 이동할 페이지에 파라미터를 넘겨줄 필요가 있을 때에는 forward 태그의 하위 태그인 <jsp:param/> 태그를 사용할 수 있다.
파라미터 넘기는 방법1)
<jsp:forward page = "이동할 페이지>
<jsp:param name="파라미터 이름1" value="파라미터 값1" />
....
</jsp:forward>
파라미터 넘기는 방법2)
<jsp:forward page="이동할 페이지?파라미터 이름1=파라미터값1&파라미터 이름2=파라미터 값2" />
💡include 액션 태그
forward 액션은 제어권을 포워딩되는 페이지로 완전히 넘기고 그 페이지의 처리가 끝나면 모든 응답을 종료시키는 방식이다. 하지만 include 액션은 임시로 제어권을 include되는 페이지로 넘겼다가 그 페이지의 처리가 끝나면 처리 결과를 원래 페이지로 되돌아오고 다시 원래의 페이지로 제어권을 반환하는 방식이다. 따라서 include 액션은 include 지시어 처럼 여러 페이지를 한 페이지 안에 담는 기능을 갖고 잇다고 할 수 있다.
사용법
예제1)
<jsp:include page="포함될 페이지" flush="false"/>
<jsp:include page="포함될 페이지" flush="false"></jsp:include>
예제2)
<jsp:include page="포함될 페이지">
<jsp:param name="파라미터 이름1" value="파라미터 값1" />
...
</jsp:include>
예제3)
<jsp:include page="test/include.jsp?id=hongildong&password=1234" />
include 액션과 include 지시어의 차이점
include 지시어의 경우 원래 페이지 안으로 include 지시어로 지정한 페이지의 소스 코드가 그대로 복사되어 들어간다. 일반적으로 정적인 코드(저작권 표시)를 포함시킬 때 주로 사용한다.
include 액션은 소스코드가 복사되는 것이 아니라 제어권 자체가 include 액션으로 지정된 페이지로 넘어갔다가 다시 원래 페이지로 돌아온다는 점이 다르다. JSP 페이지처럼 동적인 페이지를 포함시키고자 할 때 주로 사용한다.
'JSP & Servlet > 개념' 카테고리의 다른 글
[JSP & Servlet] 자바빈(JavaBean) (0) | 2022.03.29 |
---|---|
[JSP & Servlet] 템플릿 페이지 (0) | 2022.03.29 |
[JSP] JSP 영역 객체 (application, session, request, pageContext) (0) | 2022.03.29 |
[JSP & Servlet] JSP 내장 객체 (0) | 2022.03.28 |
[JSP] JSP 스크립트 요소 (선언문, 스크립틀릿, 표현식) (0) | 2022.03.28 |