최대 1 분 소요

1. @PathVariable을 이요한 경로 변수 처리

다음은 ID가 10인 회원의 정보를 조회하기 위한 URL이다

http ://localhost:8080/sp5-chap14/members/10

이 형식의 URL을 사용하면 각 회원마다 경로의 마지막 부분이 달라진다. 이렇게 경로의 일부가 고정되어 있지 않고 달라질 때 사용할 수 있는 것이 @PathVariable 애노테이션이다. @PathVariable 애노테이션을 사용하면 다음과 같은 방법으로 가변 경로를 처리할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import org.springframework.web.bind.annoatation.PathVariable;
...

@Controller
public class MemberDetailController{
    private MemberDao memberDao;

    public void setMemberDao(MemberDao memberDao){
        this.memberDao = memberDao;
    }

    @GetMapping("/members/{id}")
    public String detail(@PathVariable("id") Long memId, Model model) {
        Member member = memberDao.selectById(memId);
        if(member == null){
            throw new MemberNotFoundException();
        }
        model.addAttribute("member", member);
        return "member/memberDetail";
    }
}
  • 매핑 경로에 “{경로변수}” 와 같이 중괄호로 둘러 쌓인 부분을 경로 변수라고 부른다. “{경로 변수}”에 해당하는 값은 같은 경로 변수 이름을 지정한 @PathVariable 파라미터에 전달된다.\
  • 12~13행의 경우 “/members/{id}”에서 {id}에 해당하는 부분의 경로 값을 @PathVariable(“id”)애노테이션이 적용된 memId 파라미터에 전달된다.

  • 예를 들어 요청 경로가 “/members/10”이면 {id}에 해당하는 “10”이 memId파라미터에 값으로 전달된다. memId 파라미터의 타입은 Long인데 이 경우 String 타입 값 “0”을 알맞게 Long타입으로 변환한다.

Ref.

  • 최범균, 스프링프로그래밍입문5, 가메출판사.

카테고리:

업데이트: