2023. 7. 25. 17:35ㆍ기술 창고/Spring
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 타입의 주소여야 합니다.
'기술 창고 > Spring' 카테고리의 다른 글
[Spring Boot] Spring Boot Stater Projects (0) | 2023.08.28 |
---|---|
[Spring Boot] Spring Boot의 목표 (0) | 2023.08.28 |
[Spring Boot] xml 설정 파일을 이용한 Bean 관리 및 사용 (0) | 2023.05.31 |
[Spring Boot] Spring Boot Session 사용 (Spring Bean Scope) (0) | 2023.03.15 |
[Spring Boot] JWT (Json Web Token) (0) | 2023.01.13 |