[Spring boot] URL로 파라미터 넘기기(@PathVariable, @RequestParam)

권하준·2024년 5월 14일
1

Spring Boot

목록 보기
9/14
post-thumbnail

스프링 부트 프로젝트를 진행하던 중 URL주소에 파라미터를 넘겨야 할 경우가 생겼다.
그 방법들에 대해서 알아보겠다.

1. URL 경로 중간에 파라미터 삽입(@PathVariable)

말 그대로 URL 경로 중간에 파라미터를 삽입하는 방법이다.
변수에 따른 하위 페이지가 존재하는 경우 사용하기 용이하다.

URL 예시


이 외에 ~/user/124/watches/, ~/user/125/watches/ 등등

사용법

@GetMapping("/user/{userId}/watches/")
    public String userWatchList(@PathVariable String userId, Model model){
        User user = userService.findUser(userId).orElse(null);
        List<Watch> watchList = userService.watchesByUser(user);
        model.addAttribute("watchList", watchList);
        return "watch_list.html";
    }
  1. 컨트롤러와 매핑시킬 URL에서, 파라미터가 삽입될 부분은 { 변수명 } 을 사용하여 표시한다.
    여기서 변수명은, URL을 통해 넘겨 받을 파라미터 변수를 뜻한다.
  2. 메소드의 매개변수로 해당 파라미터 값을 받아올 변수를 추가한다. 해당 매개변수에는 @PathVariable 아노테이션을 추가한다.
    • 해당 매개변수를 통해, URL로 넘겨받은 값을 메소드 안에서 사용할 수 있다.
    • 만약 메소드의 매개변수와 { } 안의 변수 이름이 같은 경우에는, @PathVariable아노테이션은 생략 가능하다.
      • 하지만 개인적으로는 코드의 가독성을 위해, 해당 아노테이션을 계속 사용하는 것을 권장한다.

2. URL 변수로 파라미터 넘기기

URL 주소 마지막에 ?키워드를 붙힌 후, 변수를 넘겨주는 방식이다.
다양한 변수를 간편하게 넘길 수 있다.

URL 예시

사용법

@GetMapping("/{userId}/watch/new/")
    public String addWatch_get(@PathVariable String userId, Model model, @RequestParam String id, @RequestParam String pw){
        model.addAttribute("userId", userId);

        if (userService.checkIdPw(id, pw))
            return "watch_createForm.html";
        else return "redirect:/user/"+userId+"/watches/";
    }
  • 메소드의 매개변수로 URL을 통해 넘길 파라미터들을 담을 매개변수들을 추가한다.
    • 해당 매개변수들에는 @PathVariable 아노테이션을 추가한다.
profile
자바 BE 개발자 지망생입니다.

0개의 댓글