redirect
리다이렉트는 다른 페이지로 이동시켜주는 기능이다.
스프링의 컨트롤러에서 redirect할 경로를 지정해줄 수 있다.
이번 포스팅에서 설명할 Controller, View 파일 경로이다.
Controller method들끼리 home -> test1 -> test2 순서로 redirect를 진행할 것이다.
<HomeController.java>
먼저 속성a에 속성값 97을 붙여 다음 컨트롤러 메소드인 test1로 redirect해주는 코드이다.
컨텍스트 경로(/demo) + redirect 경로(/test/test1) 로 요청을 돌려주게 된다.
package com.example.demo;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
model.addAttribute("a", 97);
return "redirect:test/test1";
}
}
<TestController.java>
redirect에 의해 요청은 test1 메소드로 매핑되었고, test1 메소드에서 다시 test2 메소드로 redirect하고자 한다.
home 메소드로부터 전송받은 a속성은 다시 model 객체에 담고 b속성을 새로 model 객체에 담아주는 모습이다.
그리고 부모 경로(/demo/test) + redirect 경로(/test2) 로 요청을 돌려주는 것이다.
test1 메소드에서의 redirect에 의해 최종적으로 요청은 test2 메소드로 매핑되었다.
test1 메소드로부터 전송받은 a, b속성은 ModelAndView 객체에 담고 c속성을 새로 ModelAndView 객체에 담아주고,
마지막으로 중간 주소("test/test2")를 설정 파일에 반환해주는 모습이다.
※ ModelAndView 객체로 setViewName() 메소드에 redirect: 경로를 지정하는 것도 가능하다.
package com.example.demo;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/test1")
public String test1(HttpServletRequest request, Model model) {
String a = request.getParameter("a");
model.addAttribute("a", a);
model.addAttribute("b", 98);
return "redirect:test2";
}
@RequestMapping("/test2")
public ModelAndView test2(HttpServletRequest request) {
String a = request.getParameter("a");
String b = request.getParameter("b");
ModelAndView mav = new ModelAndView();
mav.addObject("a", a);
mav.addObject("b", b);
mav.addObject("c", 99);
mav.setViewName("test/test2");
return mav;
}
}
<test2.jsp>
direct에 의해 최종적으로 test2.jsp가 클라이언트에게 보여진다.
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
안녕하세요 여기는 <b>test2.jsp</b>입니다. <br>
a -> ${a} <br>
b -> ${b} <br>
c -> ${c}
</body>
</html>
실행 화면
속성 a, b, c가 모두 정상적으로 전송된 모습이다.
'Spring Series > Spring Framework' 카테고리의 다른 글
[Spring] 게시판 설계 준비과정 (0) | 2021.01.07 |
---|---|
[Spring] Validator로 form 데이터 검증하기 (0) | 2021.01.06 |
[Spring] form 데이터 처리 방식 4가지 소개 (0) | 2021.01.04 |
[Spring] Mysql 데이터베이스 연동하기 (0) | 2021.01.03 |
[Spring] @Controller 보충 설명 (0) | 2021.01.01 |
댓글