Java Spring 프레임워크에서 리다이렉트 시 파라미터를 전달하는 방법

2025. 3. 6. 08:08IT/기타

반응형

Java Spring 프레임워크에서 리다이렉트 시 파라미터를 전달하는 방법은 여러 가지가 있습니다. 대표적인 방법을 소개하겠습니다.


1. RedirectAttributes 사용 (추천)

Spring의 RedirectAttributes를 사용하면 URL에 파라미터를 추가하거나, Flash 속성을 이용해 일회성 데이터를 전달할 수 있습니다.

URL 쿼리 파라미터 전달 (GET 방식)

@Controller
public class SampleController {

    @GetMapping("/redirect")
    public String redirectWithParams(RedirectAttributes redirectAttributes) {
        redirectAttributes.addAttribute("name", "John");
        redirectAttributes.addAttribute("age", 30);
        return "redirect:/target";
    }

    @GetMapping("/target")
    @ResponseBody
    public String target(@RequestParam String name, @RequestParam int age) {
        return "Name: " + name + ", Age: " + age;
    }
}

👉 브라우저에서 /redirect로 요청하면 /target?name=John&age=30으로 리다이렉트됩니다.

Flash Attribute 사용 (POST-Redirect-GET 패턴)

FlashAttribute는 일회성 데이터 저장을 위해 사용되며, 리다이렉트된 후 소멸됩니다.

@Controller
public class SampleController {

    @PostMapping("/submit")
    public String handleSubmit(RedirectAttributes redirectAttributes) {
        redirectAttributes.addFlashAttribute("message", "Success!");
        return "redirect:/result";
    }

    @GetMapping("/result")
    public String resultPage(Model model) {
        return "result";  // 뷰에서 ${message}로 접근 가능
    }
}

👉 redirect:/result 이후 message 값은 유지되지만 URL에 노출되지 않습니다.


2. URL 직접 지정 (단순한 경우)

쿼리 스트링을 직접 작성하여 리다이렉트할 수도 있습니다.

@GetMapping("/redirect2")
public String redirectManually() {
    return "redirect:/target?name=Jane&age=25";
}

👉 URL을 직접 구성해야 하므로, 파라미터 값이 동적으로 변하는 경우 RedirectAttributes 사용이 더 적절합니다.


3. HttpServletResponse 사용

HttpServletResponse.sendRedirect()를 사용하면 완전히 새로운 요청으로 이동할 수 있습니다.

@GetMapping("/redirect3")
public void redirectWithResponse(HttpServletResponse response) throws IOException {
    response.sendRedirect("/target?name=Mike&age=40");
}

👉 Spring MVC 방식보다는 덜 사용되며, 리턴값을 활용할 수 없습니다.

반응형