본문 바로가기
IT/JSP

[JSP] - 25. <jsp:forward> 액션 태그 사용법

by 차이나는 개발자 2020. 7. 25.
728x90
반응형

#<jsp:forward> 액션 태그 사용법

 

 

#<jsp:forward>

-하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 사용된다.

-제어권을 포워딩되는 페이지로 넘긴다.

 

 

#<jsp:forward> 액션 태그 사용법

<jsp:forward page="포워딩할 JSP 페이지">
	.....
</jsp:forward>

 

 

#Web-INF폴더는 외부에서 접근이 안된다.
-서버 내부에서 Web-INF로 forward는 가능하다.(내가 정 한 페이지만 넘어가게 지정가능)

 

 

#<jsp:forward> 액션 태그를 실행하기 전에 웹 브라우저에 데이터가 전송되면 안 된다.

즉 실행 전에 출력 버퍼를 플러시 하면 에러가 발생한다.

 

 

예제 1)

1.from.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%-- <jsp:foward> 액션 태그를 실행하면 생성했던 출력 결과는 모두 제거된다. --%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
	이 페이지는 from.jsp가 생성한 것입니다.
	
	<jsp:forward page="./to.jsp" />

</body>
</html>

 

 

2.to.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
	이페이지는 to.jsp가 생성한 것입니다.
</body>
</html>

 

 

-결과 화면

 

 

예제 2)

1.select.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head> 
<body>
	<form action="<%= request.getContextPath() %>/test/view.jsp">
		보고 싶은 페이지 선택:
			<select name="code">
				<option value="A">A 페이지</option>
				<option value="B">B 페이지</option>
				<option value="C">C 페이지</option>
			</select>
		<input type="submit" value="이동">	
	</form>
</body>

 

 

2.view.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String code = request.getParameter("code");
	String viewPageURI = null;
	
	if(code.equals("A")){
		viewPageURI = "a.jsp";
	}else if(code.equals("B")){ 
		viewPageURI = "b.jsp";
	}else if(code.equals("C")){ 
		viewPageURI = "c.jsp";  
	}
%> 
<jsp:forward page="<%= viewPageURI %>" />

 

 

3.a.jsp, b.jsp, c.jsp(Body부분만 다름)

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
A 페이지
</body>
</html>

 

 

-결과 화면1

 

-결과 화면2

 

 

#<jsp:forward> 액션 태그 vs 리다이렉트

 

<jsp:forward> 액션 태그

-request가 1번 발생한다. (request객체를 계속 공유하게 된다.(request가 유지된다.)

-요청이 들어오면 내 애플리케이션 내부에서 이동한다.

-동일한 페이지 이동 기능이 있다.
-단순 페이지 이동에는 더 유리하다.
-쓰기나, 업데이트, 삭제 같은 것은 안된다. (요청이 한 번밖에 안되기 때문이다.)
-forward 액션 태그 밑에 있는 코드는 실행이 안된다.
-사용자는 연결한 URL의 존재를 알지 못한다.(e.g.) from -> to(to의 존재는 모른다.)
-jsp:forward에 의해 호출된 페이지는 호출 한 페이지와 request와 response객체를 서로 공유한다.

 

리다이렉트
-request가 2번 발생한다. 지그재그 형식이다.
-외부로도 이동이 가능하다.
-쓰기나, 업데이트, 삭제가 가능하다 
-리다이렉트 밑에 있는 코드들은 실행이 된다.

-이동한 새로운 페이지에서는 request와 response객체가 새롭게 생성된다.

 

 

 

728x90
반응형

댓글