포워딩 리다이렉트 차이

2019년 10월 24일 by Xion

    포워딩 리다이렉트 차이 목차

Send14.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
	<div>
	<H2> Send14.jsp ● ->Receive14_for.jsp ○ ->Receive14.jsp</H2>
	<H2> Send14.jsp ● ->Receive14_re.jsp ○ ->Receive14.jsp</H2>
	</div>
	
	
	<br>
	
	<div>
		<form action"" method="post">
			이름:<input type="text" name="userName" class="txt"><br><br>
			<!--  버튼안 -> form 안 -> action 속성안 -->
			<button type="submit" class="btn" onclick="this.form.action='Send14_re.jsp'">리다이렉트
			</button>
			
			<button type="submit" class="btn" onclick="this.form.action='Send14_for.jsp'">포워드
			</button>
			
		</form>
		</div>
		
		<!--  페이지의 실행 흐름 -->
		<!-- 
			①리다이렉트(Send14.jsp ->Send14_re.jsp ->Receive14.jsp)
			   -리다이렉트는 지정한 주소
			    (response.sendRedirect("Receive14.jsp")를
			    클라이언트가 서버에게 재 요청하는 것.
			   -처음 요청한 request 객체는 리다이렉트로 넘어가는 과정에서 사라진다.
			    (소멸된다.)
			   -요청이 클라이언트 단위에서 새로 요청하는 것이기 때문에
			    속도가 늦어질 수 있다.
			   -DB에서 insert,update,delete하고 나면 리다이렉트를 지정하여 처리해야
			    수정된 내용을 적용하여 확인할 수 있다.
			   -브라우저의 주소를 확인해보면 ...
			    최종 도착 페이지에 해당하는 Receive14.jsp인 것을 확인할 수 있따.
			    
			 ②포워드(Send14.jsp ->Send14_for.jsp ->Receive14.jsp)
			 
			   -포워드는 서버 내에 수신된 데이터를 포워딩한 주소로 넘겨주는 것.
			   -이 상황에서는 처음 요청한 request객체가 유지된다.
			   -서버 내부에서 주소가 변경된 것이기 때문에
			    클라이언트 입장에서는 이 사실을 알지 못한다.
			    그렇기 때문에 클라이언트에게 보이ㅡㄴ 주소는
			    포워딩 되기 이전의 주소만 노출된다.
			   -보안 측면에서 유리할 수 있다.
			   -포워딩 시 재전송하는 데이터를 가감할 수 있다.
			    (SetAttribute(),getAttribute() 메소드 사용)
			    ※setAttribute() , getAttribute()는 문자열 뿐 아니라
			     객체를 넘기고 받을 수 있다.
			   -서블릿에서 작업한 결과를 클라이언트 출력 화면을 구성하는
			    JSP로 넘길 때 포워등을 많이 사용하게 된다.
			   -브라우저의 주소를 확인해 보면 . . .
			    최종 도착 페이지가 아닌 Send10_for.jsp인 것을 확인할 수 있다. -->
</body>


</html>

Send14_re.jsp

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");

	String userName=request.getParameter("userName");
	
	request.setAttribute("message", "만나서 반갑습니다.");
	//response전에 
	//request객체의 key(message)의 값 안에 "만나서 반갑습니다."를
	// value로 넣는다.
	
	
	//클라이언트에게 던져주는 것 즉 B의 주소 (다른 볶음밥 집) 
	//그러므로 최초 요청은 여기서 끝이난다. 1번의 요청이 종결됨.
	//볶음밥을달라 하면서 A에게 만났지만 B에게 가면 알아서 
	//만들어주지 않음 .
	//결과적으로 B는 만나지만 다시 재요청을 새롭게 해야한다
	//즉,Receive에서 다시 재 요청을 해야한다.(클라이언트와 만나지않음)(바로Receive에게감)
	response.sendRedirect("Receive14.jsp"); //리다이렉트
	
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

	<div>
		<p>리다이렉트</p>
	</div>
	
	<div>
		<p>이름 : <%=userName %></p>
	</div>
	
	
</body>


</html>

Send04_for.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%

   request.setCharacterEncoding("UTF-8");
   //여기서는 다시 요청 발생하지 않음.
   String userName=request.getParameter("userName");
    //볶음밥을 만들어주세요 하는 요청을 A가 받아 B에게 넘겨주는것.
  	//즉, 주방안에서 A가  B에게 요청하는것 
	//(서버 내부에서 발생하는 일 )
   request.setAttribute("message", "안녕하세요");


%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Send14_for.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
   <div>
      <h1> 포워딩 </h1>
   
   </div>
   
   
   <div>
      <p>이름 : <%=userName %></p>
      <jsp:forward page="Receive14.jsp"></jsp:forward>
   </div>
   
   
</body>


</html>

Receive14.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");

	String userName = request.getParameter("userName");

	
	//Send14_re에서 setAttribute로 request에 값을 적재했을때,
	// 그 값을 꺼내어 쓰려면 getAttribute로 쓴다.
	//또한, 객체 자체를 반환값으로 받을 수 있다.
	//한 마디로 object type이 된다.
	//String으로 형변환 즉,다운캐스팅 해줘야한다.
	String message = (String)request.getAttribute("message");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Receive14.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
	<div>
		<p>최종 수신 페이지(Receive14.jsp)</p>
		
	
	</div>
	
	<div>
		<p>이름:<%=userName %></p>
		<p>메시지:<%=message %></p>
	</div>
	
	
</body>
</html>

'Web(국비) > JSP' 카테고리의 다른 글

JSP-포워딩/리다이렉트 관련 문제  (0) 2019.10.24
JSP  (0) 2019.10.24
포워딩과 리다이렉트란?  (0) 2019.10.24
JSP-<a>태그 활용하여 값 넘겨주기  (0) 2019.10.24
JSP-과제 이전 이후 만년달력 출력  (0) 2019.10.24