WEB | Forward와 Redirect

바다·2023년 6월 17일
0

WEB

목록 보기
9/12
post-thumbnail

Forward와 Redirect

웹에서 페이지를 요청할 때 "Forward""Redirect" 2가지의 방식을 지원한다. 두 가지의 차이점을 알아보고자 한다 :)

Forward 방식

  • 서버 내부에서 일어나는 호출 방식
  • 응답을 위임하여 처리한다.
  • Web Container 차원에서 페이지의 이동만 존재한다.
  • 웹 브라우저에는 최초에 호출한 URL만 표시되고, 이동한 페이지의 URL 정보는 확인할 수 없다.
  • 현재 실행 중인 페이지와 forward에 의해 호출된 페이지는 request와 response 객체를 공유한다.

    이미지 출처 : https://blog.naver.com/saintw/100165339381

Spring에서 Forward 사용하기

@PostMapping ("forwardSeoul")
public String forwardSeoul(@RequestParam(required = false) String name, Model model) {
	String forwardName = name;
    model.addAttribute("name", forwardName);
    return ("/seoul");
}
  • 클라이언트에게서 입력받은 값은 model에 attribute로 추가해주기
  • return("/forward할 주소") 형식으로 작성

실무 활용 방식

  • 시스템에 변화가 생기지 않는 단순 조회 요청의 작업에 사용된다.
    예) 글 목록 보기, 검색 등
  • 특정 URL에 대해 외부에 공개되지 말아야 하는 부분을 가리는데 사용하거나 조회를 위해 사용된다.

Redirect 방식

  • 클라이언트가 한 번 더 요청을 보내도록 하는 방식
  • Web Container로 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다.
  • 페이지 자체를 이동하여 처리하는 방식이다.
  • 웹 브라우저는 URL을 redirect된 주소로 변경한다.
  • request, response 객체가 새롭게 생성된다. (공유되지 않는다.)

    이미지 출처 : https://blog.naver.com/saintw/100165339381

Spring에서 Redirect 사용하기

@PostMapping("redirectBusan")
public String redirectBusan(@RequestParam(required = false) String name, RedirectAttributes rttr) {
	String redirectName = name;
    rttr.addFlashAttribute("name", redirectName);
    return ("redirect:/busan");
}
  • redirect를 사용하는데 객체 값을 담아서 전달하고 싶다면 "RedirectAttributes" 객체를 활용하기
  • return("redirect:/redirect할 주소") 형식으로 작성

실무 활용 방식

  • 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용된다.
    예) 회원가입 - 요청을 중복해서 보내는 것을 방지할 수 있다.
profile
ᴘʜɪʟɪᴘᴘɪᴀɴs 3:14

0개의 댓글