[Spring Boot] Spring 에서 외부 URL로 Redirect 이동

2023. 7. 25. 17:35기술 창고/Spring

728x90
SMALL

Spring 에서 페이지로 이동할 때 여러가지 방법이 있습니다.

내부 페이지 뿐만 아니라 외부의 Url 주소를 통해 이동할 수도 있습니다.

그 중 몇 가지를 간단하게 알아보겠습니다.

 

@Controller
public class ExRedirectController {

   // return string
   @GetMapping("/ex_redirect1")
   public String exRedirect1() {
       return "redirect:http://www.naver.com";
   }

   // return ModelAndView
   @GetMapping("/ex_redirect2")
   public ModelAndView exRedirect2() {
       String projectUrl = "redirect:http://www.naver.com";
       return new ModelAndView("redirect:" + projectUrl);
   }
   
   // httpServletResponse.sendRedirect
   @GetMapping("/ex_redirect3")
   public void exRedirect3(HttpServletResponse httpServletResponse) throws IOException {
       httpServletResponse.sendRedirect("https://naver.com");
   }
   
   // RedirectView 
   @RequestMapping("/ex_redirect4")
   public RedirectView exRedirect4() {
       RedirectView redirectView = new RedirectView();
       redirectView.setUrl("http://www.naver.com");
       return redirectView;
   }
   
   // httpHeaders
   @RequestMapping("/ex_redirect5")
   public ResponseEntity<Object> exRedirect5() throws URISyntaxException {
       URI redirectUri = new URI("http://www.naver.com");
       HttpHeaders httpHeaders = new HttpHeaders();
       httpHeaders.setLocation(redirectUri);
       return new ResponseEntity<>(httpHeaders, HttpStatus.SEE_OTHER);
   }
}

 

(1) String

Controller의 역할 중 하나는 클라이언트 요청을 받고 비즈니스 로직을 수행하여 결과를 반환해줄 때 뷰 리졸버를 통해 보여져야 할 뷰단을 찾아 이동시킬 수 있게끔 연결해줍니다.

Controller 에서 String 타입으로 이동할 페이지의 url을 리다이렉트 키워드와 함께 기입해주면 해당 뷰 단으로 이동하게 됩니다.

 

 

(2)  ModelAndView

ModelAndView 는 전달할 데이터 (Model) 과 전달시킬 뷰 (View) 를 한번에 입력받아 리다이렉트 시키는 방법입니다.

기본적으로 addObject 함수로 키-값 형식으로 전달할 데이터를 넣어주고, setViewName 함수를 사용하여 전달할 URL 주소를 넣으면 해당 주소의 뷰 단에 데이터가 전달됩니다.

위의 코드에서는 바로 생성자 호출하면서 데이터 없이 주소만 넘겼습니다.

 

 

(3) HttpServletResponse.sendRedirect

Servlet의 Response 반환 헤더에 sendRedirect 함수를 통해 리다이렉트 시키는 방법입니다.

 

 

(4) RedirectView

RedirectView 라고 해서 바로 뷰 단에 리다이렉트 시켜주는 객체도 존재합니다.

setUrl 함수를 통해 이동할 URL 주소를 넣게 되면 해당 페이지로 리다이렉트 이동되게 됩니다.

 

 

(5) HttpHeaders

 Http 헤더에 이동할 URL을 지정해주는 setLocation 함수를 통해 ResponseEntity 를 활용하여 페이지를 이동시켜줄 수 있습니다.

setLocation 함수에 주소를 넣어주게 될 때는 URI 타입의 주소여야 합니다.

 

728x90
반응형
LIST