상세 컨텐츠

본문 제목

redirect 와 forward의 차이 (예시)

JSP

by shika 2022. 1. 23. 12:44

본문

 

Redirect는 창에 접속시에 아예 다른 창으로 넘어가는 느낌

Forward는 정보를 유지한채로 흐름을 넘기는느낌

 

음..

아마도 뭐 로그인에 실패했을때 새창을 열면 Redirect로 하고

성공해서 새창을 열어주면 forward같은 느낌이랄까..

 

@Controller
public class TestController { //Redirect : 클라이언트에게 새로운 페이지 요청을 응답결과로 전달
							  //Forward : 서버상에서 코드의 흐름이 이동됨(url은 원래대로임!)
	@GetMapping("/test1")
	public String test1() {
		
		return "redirect:sub1";
	}
	
	@GetMapping("sub1")
	public String sub1() {
		return "sub1";
	}
	
	@GetMapping("test2")
	public String test2() {
		return "forward:sub2"; //이렇게 하면 주소값은 안바뀌는데 출력은 sub2를 해준다(url은 test2로 표시됨)
	}
	
	@GetMapping("/sub2")
	public String sub2() {
		return "sub2";
	}
}

컨트롤러가 이렇게 있다면 실제 실행시에

 

 

 

 

 

 

Redirect누르면 sub1이 url에도 당연히 나타나고

얘는 주소창에 test2라고 나오게 된다(실제로는 forward로 sub2를 요청한건데

url은 test2

 

위 컨트롤러 코드를 보면 흐름을 이해할수 있을것이다.

 

마지막 사용법 

 

@GetMapping("/test1")
public String test1() {

return "redirect:sub1";
}

 

@GetMapping("test2")
public String test2() {
return "forward:sub2"; //이렇게 하면 주소값은 안바뀌는데 출력은 sub2를 해준다(url은 test2로 표시됨)
}

위에서 봤던 이 코드들 처럼

컨트롤러에서 return시에

 

return "foward:~"; 이거나

return "redirect:~"; 로 사용하면 된다.

 

큰 차이점은

Redirect는 request가 소멸되고

forward는 request가 유지된다

(session은 둘다 유지)

 

그래서 정보전달시 forward가 유용하게 쓰이는거같다.

관련글 더보기

댓글 영역