ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC - Redirect와 Forward
    Spring/Spring MVC 2021. 12. 27. 11:37
    반응형

    Redirect와 Forward

     Redirect는 서버가 응답 결과로 준 URL을 클라이언트 측에서 다시 한번 서버에 요청하는 방식이고,

    Forward는 URL을 유지하며 Controller에서 요청받은 URL에 따른 메서드를 실행하고,

    그 메서드가 또 다른 메서드를 실행시키는 방법을 의미한다.

    아래에서 자세히 알아보자.


    더보기

    메서드의 리턴

    • Controller를 통해 요청 주소와 매핑되어 있는 메소드는 반드시 반환 값을 가져야 한다.
    • 지금까지 문자열, Model, ModelAndView 로 반환해 보았다.
    • 클라이언트에게 전달할 응답을 전해주기 위해 JSP를 지정하는 부분이다.
    • JSP 지정하는 방식은 redirect와 forward 두 가지가 있다.

    redirect
    • 클라이언트에게 요청할 주소를 응답 결과로 전달하는 것을 의미
    • 클라이언트가 응답받은 결과로 직접 서버에 요청하게 된다.
    • 클라이언트가 직접 요청하는 것이므로 주소창의 주소는 변경된다.
    • 클라이언트가 새로 요청을 한 것이므로 HttpSevletRequest 객체는 유지되지 않는다.
    • HttpSession 객체는 유지된다.
    • URL의 변화 여부가 필요하다면 Redirect를 사용하는 것이 좋다.

     

    testController.java

    @Controller
    public class testController {
    	//redirect 방법
    	@GetMapping("/test1")
    	public String test1() {
    		return "redirect:/sub1";
    	}	
        
    	@GetMapping("/sub1")
    	public String sub1() {
    		return "sub1";
    	}
    
    }

     클라이언트는 /test1을 요청했는데 redirect:/sub1으로 클라이언트가 다시/sub1을 요청하라고 서버가 전달해준다. 때문에 클라이언트가 sub1을 새로 요청을 하여 주소가 변경된 것을 볼 수 있다.


     

    forward
    • 코드의 흐름을 서버상에서만 이동하는 것을 의미한다.
    • 주소창의 주소는 변경되지 않는다.
    • HttpSevletRequest, HttpSession 객체 모두 유지된다.
    • 객체를 재사용하거나 공유해야 한다면 Forward를 사용하는 것이 좋다
    @Controller
    public class testController {
    
    	//forward 방법
    	@GetMapping("/test2")
    	public String test2() {
    		return "forward:/sub2";
    	}
        
    	@GetMapping("/sub2")
    	public String sub2() {
    		return "sub2";
    	}
    }

     서버 안에서 흐름이 넘어가므로 주소가 변경되지 않으며 HttpServletRequest 객체도 유지가 된다.

    반응형

    댓글

Designed by Tistory.