Web-Forward&Redirect

2 minute read

Forward&Redirect

페이지의 요청을 처리하는 방식이다.

ForwardRedirect
대상Server to ServerClient to Server
Data Inputrequest.setAttributeURL
Data Outputrequest.getAttributerequest.getParameter
사용이유객체 재상용, 공유URL 변화


Html

각각 Forward 와 Redirect라는 URL로 요청을 보내게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>

<body>
	Foward 방법: <br>
    <form action="Forward" method="post">
        Information Input: <input type="text" name="data" value="tom">
        <input type="submit">
    </form><br>
    
    Redirect 방법: <br>
    <form action="Redirect" method="post">
        Information Input: <input type="text" name="data" value="tom">
        <input type="submit">
    </form>

</body>

</html>


실행 화면:


Forward

Forward방식으로 요청을 처리하는 방식이다.
1) Forward.java

  • Forward라는 요청이 들어왔을때 요청하는 곳이다.
  • name변수에 HTML에서 data의 이름을 가진 변수의 값을 저장한다.
  • data변수에 “Foward”와 name의 변수를 담는다.
  • Forward.jsp에 data를 전달한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package pack;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Forward
 */
@WebServlet("/Forward")
public class Forward extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("data");
		String data[] = {"Forward",name};
		
		//forwarding - Server to Server
		request.setAttribute("data", data);
		RequestDispatcher dispatcher = request.getRequestDispatcher("Forward.jsp");
		dispatcher.forward(request, response);
		
	}

}

2) Forward.jsp

  • 받은 자료를 출력하는 곳 이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ 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>
	Called File by Servlet
	<br>
	<%
		request.setCharacterEncoding("utf-8");
		//redirect Method
		String[] data = (String[]) request.getAttribute("data");
		out.println("방식은"+data[0]+"자료는" + data[1]);
	%>
</body>
</html>


결과 URL:


결과:


Redirect

Redirect방식으로 요청을 처리하는 방식이다.
1) Redirect.java

  • Redirect라는 요청이 들어왔을때 요청하는 곳이다.
  • name변수에 HTML에서 data의 이름을 가진 변수의 값을 저장한다.
  • Forward.jsp에 name을 전달한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package pack;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Redirect
 */
@WebServlet("/Redirect")
public class Redirect extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("data");
		
		//Redirect - Client to Server
		response.sendRedirect("Redirect.jsp?name=" + name);
		
	}

}

2) Redirect.jsp

  • 받은 자료를 출력하는 곳 이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ 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>
	Called File by Servlet
	<br>
	<%
		//redirect Method
		String name = request.getParameter("name");
		out.println("방식은 Redirect 자료는 " + name);
		
	%>
</body>
</html>


결과 URL:


결과:



참조:원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment