Eggs Sunny Side Up
본문 바로가기
Web/JSP_Servlet

forward & redirect

by guswn100059 2023. 4. 18.

1. forward

특정 서블릿에 대한 요청을 다른 서블릿이나 JSP로 넘겨준다. (파라미터를 넘길 수 있다.)

상대방에게 페이지 주소를 숨길 때 사용 할 수 있므며, redirect 보다 성능이 좋다.

URL은 바뀌지않으며, 내부에서만 접근이 가능하다.

 

2. redirect

다른 페이지로 넘어가도록 한다. (직접 파라미터를 넘길 수 없다.)

요청받게되면 url을 클라이언트에게 전달하고, 클라이언트가(web)  새로운 url을 요청하고 그에 따른 응답을 한다.

URL값이 넘어가기 때문에 길이에 제한이 있다.

즉, 성격이 다른 페이지 서블릿이 그 길을 알려주고 브라우저가 값을 받아오게 하는 것이다.

<%@ 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>
	<%
		// ★주의★ 페이지를 이동하는건 한 파일에서 단 한번만 사용될 수 있다.
		// == return
				
		// Forward
		String url = "http://naver.com";
		RequestDispatcher rd = request.getRequestDispatcher(url);
		rd.forward(request, response);
		
		// Redirect
		// .sendRedirect("url");
		response.sendRedirect("http://naver.com");
	
	
	%>
</body>
</html>

예제) 각각의 사이트로 이동하기

html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="Ex12MoveUrl.jsp">
		<!-- select : input
			 옵션이 여러 개라도 보내지는 데이터는 하나다.
		 -->
		<select name="selection">
			<option value="naver">네이버</option>
			<option value="daum">다음</option>
			<option value="google">구글</option>
		</select>
		
		<button type="submit">페이지로 이동</button>
	
	</form>
</body>
</html>

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>
	<%
		String selection = request.getParameter("selection");
	
		String url = "";
		
		if(selection.equals("naver")) url = "http://naver.com";
		else if(selection.equals("daum")) url = "http://daum.net";
		else url = "http://google.com";
		
		response.sendRedirect(url);
	
	
	%>
</body>
</html>

댓글