준준의 기록일지

[Spring] @RequestParam, @PathVariable 본문

스프링

[Spring] @RequestParam, @PathVariable

junjunwon 2020. 8. 20. 14:23

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."




출처 : https://elfinlas.github.io/2018/02/18/spring-parameter/

 

Spring에서 @RequestParam과 @PathVariable

Spring에서 Controller의 전달인자…Spring을 사용하다 보면 Controller 단에서 클라이언트에서 URL에 파라메터를 같이 전달하는 경우가 있습니다.주로 사용하는 형태는 아래의 두 가지가 대표적인 케이��

elfinlas.github.io

@RequestParam과 @PathVariable은 Spring에서 Controller의 "전달인자"이다.

Spring을 사용할때 view에서 controller로 URL에 파라미터를 같이 전달하는 경우가 있다.

이때 사용하는 형태는 아래 두가지가 대표적이다.

Type 1 : http://127.0.0.1?index=1&page=2

Type 2 : http://127.0.0.1/index/1

 

Type 1의 경우 파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 할 때 많이 사용한다.

Type 2의 경우 Rest Api에서 값을 호출할 때 주로 많이 사용한다.

 

@ReqeustParam

Type 1의 URL을 처리할 때 사용한다.

1
2
3
4
5
6
@GetMapping("read")
public ModelAndView getRead(@RequestParam("no"int id, SearchCriteria criteria)
{
    //...
}
 
cs

/read?no=1과 같이 url이 전달될때 위의 경우 on 파라미터를 받아온다.

@RequestParam 어노테이션의 괄호 안의 경우 전달인자 이름(실제 값을 표시)이다.

이렇게 @ReqeustParam의 경우 url 뒤에 붙는 파라미터의 값을 가져올 떄 사용한다.

 

 

@PathVariable

Type 2의 URL을 처리할 떄는 @PathVariable을 사용한다.

1
2
3
4
5
6
@PostMapping("delete/{idx}")
@ResponseBody
public JsonResultVo postDelete(@PathVariable("idx"int Idx){
    return service.deleteData(Idx);
}
 
cs

PatihVariable은 http://localhost/delete/1 일 경우 url에서 각 구분자에 들어오는 값을 처리할 때 사용한다.

 

@RequestParam과 @PathVariable을 동시에 사용하기도 한다.

1
2
3
4
5
6
7
8
@GetMapping("/usr/{usrIdx}/invoices")
public List<invoice> listUserInvoices(
    @PathVariable("userIdx"int user,
    @RequestParam(value="date", required=false) Date dateOrNull
)
{
    //...
}
cs