Server/Spring

Spring - 리다이렉트(redirect)

JaeHoney 2020. 10. 7. 20:28

리다이렉트(redirect) 란?

리다이렉트(redirect)는 웹 브라우저(사용자)가 어떤 URL로 웹 서버를 요청했을때 다른 URL로 넘겨주는 것을 말합니다.

예를 들면, Gmail로 접속했을 때 로그인이 되어 있지 않다면, 로그인이 선행되어야 하기 때문에 로그인 페이지로 이동시키는 것을 리다이렉트라고 합니다.

 

구현

@Controller
public class RegisterController {

	@RequestMapping("/register/step1")
	public String handleStep1() {
		return "register/step1";
	}

	@PostMapping("/register/step2")
	public String handleStep2(
			@RequestParam(value = "agree", defaultValue = "false") Boolean agree,
			Model model) {
		if (!agree) {
			return "register/step1";
		}
		model.addAttribute("registerRequest", new RegisterRequest());
		return "register/step2";
	}

}

/register/step1은 회원가입을 위한 약관 동의 페이지, /regesiter/step2는 실제 회원가입을 위한 페이지라고 가정하겠습니다. 사용자가 주소창에 "http://주소/register/step2"를 입력 하면

이런 에러가 발생합니다. 왜냐하면 /register/step2에 대한 GET 방식을 처리하지 않았기 때문입니다. 이렇게 잘못된 전송 방식으로 요청이 왔을때 적절한 경로로 리다이렉트(redirect)해야 합니다.

@GetMapping("/register/step2")
	public String handleStep2Get() {
		return "redirect:/register/step1";
	}

/register/step2에 대한 GET 요청이 들어오면 다시 약관 동의 페이지로 리다이렉트 시켜준 예제입니다. redirect:다음 문자열이 "/"로 시작하면 웹 애플리케이션을 기준으로 이동 경로를 생성하고, 그렇지 않으면 현재 경로를 기준으로 상대 경로를 사용합니다.

 

 

참고도서

 

초보 웹 개발자를 위한 스프링5 프로그래밍 입문
국내도서
저자 : 최범균
출판 : 가메출판사 2018.07.18
상세보기