YOO
article thumbnail

 

 

 

* 포워딩(Forwarding)

포워딩은 말 그대로 건내주기라는 뜻이다.

 

포워딩을 사용하기 위한 내장객체는 RequestDispacher 클래스를 사용한다.

 

과정
1. 클라이언트가 서버에 요청
2. 서버는 Web Container에 의해 다른 주소로 forward. 이때 객체 정보도 같이 전달
3. 서버는 새 주소에서 반환한 결과를 응답

 

특징

  • 서버에서 페이지를 바꿔서 다시 보여준다.
  • 서버가 다른 페이지를 요청하는 것이므로 request로 보냄
  • 웹 컨테이너 내부에서만 이동 가능
  • URL이 바뀌지 않는다.
  • request와 response 객체를 유지
  • 시스템에 변화가 생기지 않는 단순 조회 및 request, response 객체를 유지해야하는 경우 사용한다.

// return 시
return "forward:#";

// return 시 (데이터 포함, GET 방식)
return "forward:#?id=zuyo";

// forward() 메소드 호출
request.getRequestDispatcher("/#").forward(request, response);

// forward() 메소드 호출 (데이터 포함, GET 방식)
request.getRequestDispatcher("/#?id"+userId).forward(request, response);

// forward() 메소드 호출 (데이터 포함, request 객체에 담아서)
request.setAttribute("user", user); request.getRequestDispatcher("/#").forward(request, response);

 

 

 

 

 

 

* 리다이렉트(Redirect)

웹 컨테이너(Web Container)는 sendRedirect() 메서드가 호출되어 리다이렉트(Redirect) 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령한다. 이 명령에는 브라우저가 웹 컨테이너의 응답을 받은 후 다시 요청을 보낼 새로운 URL을 포함한다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동이 가능하며 새로운 페이지에서는 Request와 Response 객체가 새롭게 생성된다.

 

"내가 연락처 알려줄테니까 얘한테 다시 물어봐"

과정
1. 사용자가 링크를 클릭 (클라이언트가 서버에 요청)
2. 서버가 클라이언트에 Redirect 주소 보냄
3. 클라이언트는 서버에게 받은 새로운 주소로 재요청
4. 서버 응답

request와 response 객체를 담아 호출한 페이지에 전송해준다.

호출한 페이지는 담아온 request와 response의 값들을 확인할 수 있다.

 

리다이렉트를 사용하기 위한 내장객체는 HttpServletResponse 클래스를 사용한다.

 

특징

  • 서버(웹 컨테이너)가 클라이언트(웹 브라우저)에게 알려준 주소로 서버에 재요청하는 것
  • 서버가 클라이언트에게 재요청하라고 응답하는 것이므로 response로 보냄
  • 웹 컨테이너 외부의 주소로도 이동 가능
  • URL이 바뀐다.
  • request와 response 객체가 새롭게 생성된다.
  • 시스템에 변화가 생기는 경우(생성, 수정, 삭제) 재요청을 방지하기 위해 사용한다.
  • redirect시 값을 전달하려면 GET 방식으로 보내야 한다. 요청 객체가 새로 생성되기 때문에 값을 보내려면 URL과 같이 보내야 하기 때문이다.
  • Spring에서는 RedirectAttribute를 사용하여 값을 보낼 수도 있다. 이 방법은 내부적으로 세션을 사용한다.

// return 시
return "redirect:#";

// return 시 (데이터 포함, GET 방식)
return "redirect:#?id="+userId;

// sendRedirect 메소드 호출
response.sendRedirect("#");

// sendRedirect 메소드 호출 (데이터 포함, GET 방식)
response.sendRedirect("#?id="+userId);

 
 
 
 
 
 
 
 
 
 
 

※웹 컨테이너 : 컨테이너는 서블릿의 생명 주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행하는 프로그램이다

 

 

 

 

 

 

 

 

'Studying > Java' 카테고리의 다른 글

이클립스 파일명 전체 바꾸기  (0) 2023.08.04
SVN COMMIT, UPDATE, 충돌  (0) 2023.07.17
세션 (Session)  (0) 2023.05.08
Servlet에서 Session, JSP에서 Session  (0) 2023.05.08
[@Annotation] @RequestMapping  (0) 2023.05.08

검색 태그