본문 바로가기

JSP

포워딩(Forwarding) vs 리다이렉트(Redirect) 차이

  • 포워딩(Forwarding)과 리다이렉트(Redirect)

- JSP환경에서 개발시 주로 사용되는 용어이다.

- 현재 작업하는 웹페이지에서 다른 페이지로 이동하는 방법의 종류로 다른 매커니즘에 의해 동작한다.

 

  • 포워딩(Forwarding) 개념

- 웹 컨테이터(Web Container) 차원에서 페이지 이동을 의미한다.

- 동일 웹 컨테이너에서 관리하는 페이지로만 이동이 가능하다.

- 웹 브라라우저의 URL 정보는 변경되지 않으므로 클라이언트는 다른 페이지로 이동했는지 확인이 불가능하다.

- 포워딩은 클라이언트와 통신없이 서버에서만 처리되며 리다이렉트보다 나은 성능을 보여준다.

- 현재 페이지와 포워딩에 의해 호출도니 페이지는 Request와 Response 객체를 공유한다.

 

  • 리다이렉트(Redirect) 개념

- 웹 브라우저에게 다른 페이지로 이동하라고 명령한다.

- 해당 명령에 브라우저가 웹 컨테이너의 응답을 받은 후 다시 요청을 보내는 경우 새로운 URL을 포함한다.

- 다른 웹 컨테이너의 페이지로 이동이 가능하다.

- 웹 컨테이너에서는 Request와 Response 객체가 새롭게 생성된다.

- 추가적으로 발생하는 처리에 의해 포워딩보다는 느리다.

  •  Spinrg에서의 (리다이렉트 & 포워딩)

- Controller 메소드가 실행되고 View 경로를 리턴하면 기본이 포워딩 방식이므로 글 등록 후에 목록 화면이 출력되도 브라우저의 URL은 변경되지 않는다.

http://localhost:8080/BoardWeb/insertBoard.do

 

따라서 포워딩이 아니라 리다이렉트를 원할 때는 'redirect:' 라는 접두사를 붙여야 한다.

@RequestMapping(value="/insetBoard.do")
public String insertBoard(BoardVo vo, BoardDAO boardDAO) {
    boardDAO.insertBoard(vo);
    return "redirect:getBoardList.do";
}

위 소스는 글 등록 처리 후에 "getBoardList.do"로 리다이렉트 되어, 최종 URL은 다음처럼 변경된다.

http://localhost:8080/BoardWeb/getBoardList.do

'JSP' 카테고리의 다른 글

웹 애플리케이션  (0) 2020.05.17
URI(Uniform Resource Identifier)  (0) 2020.04.30
웹서버와 웹 애플리케이션 서버(was)  (0) 2020.04.26
컨테이너란?  (0) 2020.04.26