액션 태그란?
JSP 페이지 내부에서 어떤 동작을 하도록 지시하는 태그
1. forward - 페이지 전환
<jsp:forward page="이동할페이지" />
- 지정한 JSP 페이지로 요청 처리를 전달할 때 사용
- <jsp:forward> 코드가 실행되면 지정한 페이지로 이동
- 요청 흐름이 이동할 때 requset, reponse 객체를 함께 전달
- 웹 브라우저의 주소는 그대로 요청받은 JSP 페이지의 주소로 유지
[ActionTagforward.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp 액션 태그</title>
</head>
<body>
<h2>ActionTag.jsp 페이지입니다.</h2>
<hr>
<jsp:forward page="footer.jsp">
<jsp:param value="sngynhy@goolgle.com" name="email"/>
<jsp:param value="010-1234-5678" name="tel"/>
</jsp:forward>
</body>
</html>
[footer.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>footer</title>
</head>
<body>
<h2>footer.jsp에서 출력하는 메세지입니다.</h2>
<%= request.getParameter("email") %><br>
<%= request.getParameter("tel") %>
</body>
</html>
[결과]
<jsp:forward> 액션 태그 사용 시 출력 버퍼 동작
호출하는 JSP 페이지의 출력 내용은 forward가 실행되는 시점에 출력 버퍼의 내용을 모두 비우고 흐름을 이동한다.
따라서 호출하는 JSP 페이지의 내용은 출력이 되지 않는다.
2. param - 데이터 전달
<jsp:param name="파라미터키" value="파라미터값" />
- <jsp:include>, <jsp:forward>, <jsp:params>의 자식 태그로 사용 (태그 바디에 작성됨)
- 포함할 JSP 페이지에 파라미터로 데이터를 전달하는데 이용
- 파라미터의 name과 value를 직접 또는 표현식으로 지정
- 이미 동일한 이름의 파라미터가 존재할 경우, 기존 파라미터 값을 유지하면서 새로운 값을 추가
- 추가되는 파라미터는 <jsp:include>를 통해 포함되는 페이지에서만 유효
3. include - 파일 추가
<jsp:include page="포함할페이지" flush="true" />
- 지정한 JSP 페이지를 태그가 위치한 부분에 포함시킬 때 사용
- <jsp:include>코드가 실행되면 지정한 페이지로 이동
- 이동한 페이지의 결과를 출력 버퍼에 저장 후 다시 원래 페이지로 돌아옴
- 결과적으로 포함할 JSP 페이지의 실행 결과를 현재 위치에 포함시킴
속성
- page : 포함할 JSP 페이지
- flush : 지정한 JSP 페이지를 실행하기 전 출력 버퍼의 플러시 여부 지정
- flush란? 지정된 페이지로 이동할 때 현재 페이지가 지금까지의 출력 버퍼에 저장할 결과를 어떻게 처리할 것인가를 결정
- flush=true 시 액션 태그가 실행하면 출력 버퍼에 저장된 내용을 웹 브라우저에 보낸 뒤(출력 후) 지정 페이지로 이동하게 됨. 이때 HTTP 헤더 정보도 함께 전달되기 때문에, 이후 헤더정보를 추가하더라도 결과가 반영되지 않으므로 보통 flush=false로 지정하는 것이 일반적이다.
[ActionTagInclude.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp 액션 태그</title>
</head>
<body>
<h2>ActionTag.jsp 페이지입니다.</h2>
<hr>
<jsp:include page="footer.jsp">
<jsp:param value="sngynhy@goolgle.com" name="email"/>
<jsp:param value="010-1234-5678" name="tel"/>
</jsp:include>
</body>
</html>
[footer.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>footer</title>
</head>
<body>
<h2>footer.jsp에서 출력하는 메세지입니다.</h2>
<%= request.getParameter("email") %><br>
<%= request.getParameter("tel") %>
</body>
</html>
[결과]
include 지시어와 액션 태그의 차이점
두 기능 모두 하나의 jsp 파일 안에 외부 파일을 추가할 때 사용
include 지시어
<%@ include file = "포함할페이지" %>
포함할 JSP 페이지의 소스 코드를 해당 JSP에 그대로 포함시킴
외부의 페이지를 추가하여 하나의 서블릿으로 구성
즉, 소스코드만 분리되는 것이고 컴파일은 기존 파일과 함께 컴파일된다.
소스 코드가 분리되기 때문에 협업/유지보수에 유리하지만,
만약 외부 파일의 일부를 변경하게되면 기존 파일도 함께 재컴파일 되므로 낭비가 발생하게 된다.
따라서 include 지시어는 콘텐츠가 자주 바뀌는(ex 뉴스, 광소 등) 파일에는 부적합하고,
정적인 데이터를 다룰 때 용이
include 액션태그
<jsp:include page="포함할페이지" />
포함할 JSP 페이지의 실행 결과값을 해당 JSP 페이지에 포함시킴
페이지를 모듈화할 때 사용
태그 바디 존재가 존재하여 태그 바디에서 즉각적으로 파라미터 전달 가능 => include 지시어보다 동적임
동적이거나, 자주 바뀌는 콘텐츠를 다룰 때 용이
'개발 공부 > Spring' 카테고리의 다른 글
[Servlet / JSP] 서블릿과 JSP의 기본 개념 (0) | 2021.09.07 |
---|---|
[JSP] 커스텀 태그 (1) - 태그 파일 기반 (0) | 2021.09.02 |
[JSP] 표현 언어 EL - View를 View답게! (0) | 2021.09.02 |
[JSP] 액션 태그 (2) - Java Bean (useBean, setProperty, getProperty) (0) | 2021.08.28 |
[JSP/RSS] 네트워크 이론 (0) | 2021.08.19 |