두 함수(메서드)가 있다고 가정했을 때,
두 함수(메서드)에는 10000줄
과 결과
라는 동일한 코드가 있고, 두번째 함수(메서드)에 다른코드
라는 부분이있는 차이가 있다.
이런식으로 Controller 파일 안에 함수(메서드)가 여러 개 있을 때, 동일한 코드를 재사용 하기위해 redirection 을 사용한다. (@RestController에서는 동작하지 않음)
redirection을 사용하면,
클라이언트가 http://localhost:8080/away를 요청했을 때
서버에는 http://localhost:8080/home으로 응답하는 것이 redirection이다.
@Controller
public class HttpRedirectionController {
@GetMapping("/home")
public String home() {
//1만줄 가정
return "home";
}
@GetMapping("/away")
public String away() {
//다른코드
//1만줄 가정
return "redirect:/home"; //redirection이 된다.@Controller에서만 발동
}
}
컨트롤러와 메서드를 만들어주는데, 두번째 메서드에서 redirect:
는 키워드(약속된 예약어)이다. 뒤에 주소를 넣으면 away를 호출해도 home으로 응답한다.
views폴더 안에 home.jsp파일을 만들고 body 부분을 아래와 같이 작성해준다.
<body>
<h1>This is home</h1>
</body>
</html>
웹 브라우저를 통해 http://localhost:8080/home을 요청하면
이러한 화면이 뜨는데, 이 때 개발자 도구를 열어 네트워크 > home > 헤더
순서로 누르게되면 상태코드 200이라고 써있는 것을 볼 수 있다.
다음은 http://localhost:8080/away를 요청시 home으로 Redirect됐을 때 모습이다.
away를 누르면 302 코드가 써있는 것을 볼 수 있다.
'HTTP상태코드'를 구글링해보면 302코드의 의미를 알 수 있다.