본문 바로가기
아카이브/스프링

스프링의 정석 ( redirect / forward )

by nineteen 2021. 12. 28.
반응형

배운 것

redirect

forward

 

내용 정리

 

Redirect

    - 요청을 받은 페이지가 Redirect한다. (상태코드 300번대를 반환하고 재요청할 Location을 반환한다)

    - 응답을 받은 브라우저는 자동으로 Location을 읽어서 재요청한다

    - Redirect로 인한 요청은 자동으로 수행된다.

    - Redirect에 의해서 요청되는 것은 GET요청

    - 요청을 2번

 

@PostMapping("/register/save")
	public String save(User user, Model m) throws Exception {
		// 1. 유효성 검사
		if(!isValid(user)) {
			String msg = URLEncoder.encode("id를 잘못 입력하셨습니다.", "utf-8");
					
			// Redirect
			return "redirect:/register/add?msg="+msg;	// URL재작성(rewriting)
		}
		
		// 2. DB에 신규회원 정보 저장
        
		return "registerInfo";
	}

/register/add로 Redirect한다

/register/save로 요청을 하면, Redirect응답을 받게 되고,

브라우저는 자동으로 register/add경로로, GET방식으로 요청한다

요청이 2번

 

 

Forward

    - 요청을 받은 페이지가 Forward한다. (사용자가 요청한 것을 그대로 다른 페이지로 넘겨 줌)

    - 넘겨받은 페이지는 요청을 받아 처리를 하고 브라우저에게 응답해줌

    - 요청을 1번

 

@PostMapping("/register/save")	
	public String save(User user, Model m) throws Exception {
		// 1. 유효성 검사
		if(!isValid(user)) {
			String msg = URLEncoder.encode("id를 잘못 입력하셨습니다.", "utf-8");
						
			// Forward
			return "forward:/register/add";	// 다시 회원가입 화면으로 되돌려보냄
		}
		
		// 2. DB에 신규회원 정보 저장
        
		return "registerInfo";
	}

/register/add로 Forward한다

/register/save로 요청을 하면, 해당 페이지에서 /register/add로 넘겨줌

요청이 1번

 

 

느낀 점 / 보완할 점

익숙해지기 위해 자주봐야 할 것 같다.