본문 바로가기

JAVA/JSP

[JSP] 액션태그 (forward, include, param)

728x90

<jsp:include> 액션 태그

다른 JSP페이지의 실행 결과를 현재 페이지에 삽입시킨다.

 

<jsp:include page="[삽입할 페이지.jsp]" flush="[버퍼출력방식]"/>

flush는 잘 사용하지 않으며 false가 기본 값이다.

 

jsp 페이지 A와 B를 만들고 A페이지에 B를 삽입해보자.

 

페이지A

<body>
페이지 A 출력<br/>
<jsp:include page="b.jsp"/>
</body>

 

 

페이지B

<body>
페이지 B 출력<br/>
</body>

 

 

페이지 A 실행결과

include 태그를 이용하여 페이지의 머리글, 바닥글, 사이드메뉴, 글 페이지 등 여러 페이지를 구성시킬 수 있다.

 

<%@ include page="b.jsp %>

위 코드의 <%@ 지시자 구문과 같은 페이지를 삽입하는 역할을 한다.

 

<jsp:include> 특성

1. 클라이언트 측의 include

2. 동적 페이지 할당이 가능하다.

3. get방식으로 파라미터 전달할 수 없다

(동적인 페이지 작성시 사용)

4. 포함되는 문서 (b.jsp)서블릿이 따로 만들어져서 a.jsp에 삽입

 

<%@ include%> 특성

1. 서버측의 include (소스 실행 전 이미 include됨)

2. 동적 할당 불가능

3. 소스 실행전 포함되므로 변수를 같이 사용할 수 있음

(정적인 페이지 작성시 사용)

4. a.jsp 내부에 b.jsp가 포함된 상태로 서블릿이 만들어짐

 

인자를 전달해야 한다면 <%@ include%> 를 사용

 

아무런 인자도 전달할 필요가 없다면 <jsp:include>를 사용한다.

<jsp:include>로 인자를 넘기고 싶다면 get방식으로  <jsp:include name=a value="b"> 사용한다.

 

 


<jsp:forward> 액션 태그

다른 JSP페이지로 이동한다.

 

a.jsp

<body>
a의 출력
<jsp:forward page="b.jsp" />
</body>

b.jsp

<body>
b의 출력
</body>

 

a.jsp 실행 화면

 

b가 실행된다. 위에 주소창을 보면 경로가 a.jsp인 상태에서 페이지만 옮겨진 것을 확인할 수 있다.

 

jsp 기본객체인 response.sendRedirect 와 같은 기능을 수행한다.

forward 액션은 주소창 경로는 그대로인 채로 페이지만 옮기지만 response객체의 메소드는 URL을 해당 페이지로 전환한다는 차이점이 있다.

 

그래서 forward 액션은 반드시 같은 웹 어플리케이션에 포함된 파일이어야 한다.

 


<jsp:param> 액션태그

<jsp:include>와 <jsp:forward> 태그의 하위 속성으로 사용된다.

삽입되는 문서에 전달하고자 하는 값이 있을 때 사용한다.

 

<jsp:parm name="[삽입할 키]" value="[삽입할 값]"/>

jsp 기본객체에 상응하는 메서드는

<% request.setAttribute("[삽입할 키]", [삽입할 값]); %>

이다.

 

param태그는 String값만 저장할 수 있지만 setAttribute() 메서드는 Object 타입의 객체를 저장할 수 있어

String타입이 아닌 데이터를 넘겨야할 경우 jsp기본객체의 setAttribute와 getAttribute메서드를 사용한다.

 

a.jsp

<jsp:forward page="b.jsp">
	<jsp:param name="id" value="서종현"/>
	<jsp:param name="pw" value="1234"/>
</jsp:forward>

 

b.jsp

<body>
b의 출력
<%
	out.println("<br>");
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	out.println(id);
	
	out.println("<br>");
	
	out.println(pw);
%>
	
</body>

 

param으로 값을 세팅하였을 때 (String타입)

getParameter메소드로 호출할 수 있지만

 

setAttribute로 세팅한 경우 (Object타입)

getAttribute메소드로 호출한다.