현재

[JSP] forward, redirect 본문

웹 프로그래밍/JSP

[JSP] forward, redirect

AAAge 2023. 10. 18. 17:43

<forward(서버 내부 전환)>

● forward는 서버 내부에서 페이지 전환을 수행한다. 때문에 브라우저는 새로운 요청을 생성하지 않고

현재 요청과 동일한 요청을 사용한다.

● forward를 사용하면 웹 어플리케이션 내에서 페이지 전환을 수행하며, 공유 데이터나 속성을 유지하면서 전환된다.

 

-request 부터 response 까지가 1 Cycle 이다-

○ forward 요청 ( request ) - > Servlet 호출 -> 코드에 해당하는것을 reponse 

JSP 에서 : <jsp:forward page=""></jsp:forward> 를 통해 포워딩한다.

Java 에서 : RequestDispatcher dispatcher = request.getRequestDispatcher("newPage.jsp");
dispatcher.forward(request, response);

 

webapp/forward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	System.out.println("forward.jsp 실행됨..");
%>

<jsp:forward page="./to.jsp"></jsp:forward>
<!-- 브라우저는 request를 한다 
	forward는 url바뀌지 않음 request가 1회 호출함.
	링크가 변한다? 호출의 횟수가 변할 수 있다.
	forwarding은 내부에서 호출됨. 내부에서 다른 Servlet을 호출함
	forward 요청 -> Servlet 호출 -> : 1회 리퀘스트함(이뜻은 웹브라우저는 내부에서 무슨일
	일어났는지 모름)
	
	1회가 끝날때 to를 response
	-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이거는 !!forward!! jsp 입니다..
</body>
</html>

 

 

<redirect>

● redirect는 브라우저에게 새로운 요처을 생성하라고 지시, 브라우저는 새로운 요청을 서버로 전송하며 URL이 변경된다.

● redirect를 사용하면 브라우저가 새로운 URL을 요청하고 이전 요청과는 별개의 요청으로 처리된다.

 

-request 부터 response 까지가 2 Cycle 이다-

○ redirect ( request ) -> 다른 url 주소 ( response ) -> 다른 url 주소 ( request ) (?) 호출 2회

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	System.out.println("redirect.jsp 실행됨..");

	response.sendRedirect("./to.jsp");
%>

<!--  redirect(재전송)는 url도 to로 변경됨 -->
<!-- 브라우저는 request를 한다 
	redirect는 url바뀜 request가 2회 호출함.
	링크가 변한다? 호출의 횟수가 변할 수 있다.
	redirect요청이 오면 redirect를해라고 다시 웹브라우저에 리턴해준다.
	요청 -> redirect -> 응답(브라우저로 리턴) ( 여기까지가 1회 호출 )
	브라우저에서 to를 다시 요청
	1회가 끝날때 redirect을 response
	-->

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이거는 !!redirect!! jsp 입니다..
</body>
</html>

 

webapp/to.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>
이거는 !!to!! jsp 입니다..
</body>
</html>