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가 유용하게 쓰이는거같다.
스프링 jsp에서 contextPath 구하는 방법 (예시) (0) | 2022.03.29 |
---|---|
JSP에서의 주석처리 <!-- --> <%-- --%> 차이! (0) | 2022.01.26 |
댓글 영역