본문 바로가기

웹 프로그래밍/JSP

[JSP] 페이지 이동 기술(forward, response.sendRedirect)

forward

 

forwardTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action = "forwardSet.jsp" method="get">
	<!-- <form action = "includeSet.jsp" method="get"> -->
		id : <input type ="text" name ="id">
		<input type = "submit" value ="전송">
	</form>
</body>
</html>

 

 

forwardSet.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%-- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> --%>
<%@ taglib prefix="c" uri ="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%-- 
	<%
		 String id = request.getParameter("id");
	%>
	<h2>결과화면</h2>
	<%
		if(id.equals("admin")) {
	%>
		관리자님 환영합니다<br>
	<%
		} else {
	%>
		<%= id %>님  환영합니다<br>
	<%
		}
	%>
	 --%>
	 
	<h2>결과 화면</h2>
	<c:if test="${ param.id eq 'admin'}">
		<jsp:forward page="admin.jsp"/>	
	</c:if> 
	
	<c:if test="${ param.id ne 'admin'}">
		${ param.id }님 환영합니다.<br>
	</c:if> 
	
</body>
</html>

 

admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>관리자님 환영합니다.</h2>
</body>
</html>

 

 

 

 

forwardSet.jsp에서

forward 했기 때문에, <h2>결과 화면</h2>가 나타나지 않는다.

 

 

 


response.sendRedirect

스크립트릿 내에서만 쓸 수 있음. (forward와 같은 기능)

 

그러나 다른 점이 있다.

요청-응답 사이클이 2번 일어나고,

redirect 받은 jsp는 request 영역에 접근할 수 없다.

 

 

==> 'test.jsp'와 'for.jsp'는 별개의 reqeust - response이기 때문에, request 공유영역에 접근할 수 없다.

==> 따라서, sendredirect를 사용하면서 변수를 공유하고자 한다면, 공유영역을 (session, application ) 등으로 올리거나

==> 파라미터를 넘겨주는 형태로 변수를 공유하여 사용할 수 있다.