spring

@RequestParam과 @PathVariable

jojelly 2022. 8. 11. 14:30
반응형

 

Spring을 사용하다 보면 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에서 값을 호출할 때 주로 많이 사용합니다.

Spring에서는 이러한 전달인자를 처리하는데 두 가지 방법을 제공합니다.

 

@RequestParam 사용하기

Type 1의 URL을 처리할 때 @RequestParam을 사용하게 됩니다.
아래의 예제와 같이 Controller 단에서 사용합니다.

 

@GetMapping(/"read")
public ModelAndView getFactoryRead( int factroyId, SearchCriteria criteria) 
{
  //...    
}
 

위의 경우 /read?no=1와 같이 url이 전달될 때 no 파라메터를 받아오게 됩니다.
@RequestParam 어노테이션의 괄호 안의 경우 전달인자 이름(실제 값을 표시)입니다.
이렇게 @RequestParam의 경우 url 뒤에 붙는 파라메터의 값을 가져올 때 사용을 합니다.

 

@PathVariable 사용하기

Type 2의 URL을 처리할 때는 @PathVariable을 사용하게 됩니다.

 

@PostMapping("/delete/{idx}")
@ResponsBody
public JsonResultVo postDeleteFactory( int factoryIdx) {
	return factoryService.deleteFacotryData(factoryIdx);
}​
 

위에 예제 코드처럼 PathVariable의 경우 url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용합니다.

 

실제로 사용은?

물론 @RequestParam 또는 @PathVariable 하나만 사용하는 것이 아닌 복합적으로 사용을 하기도 합니다.

 

@GetMapping/{userIdx}/invoices
public List<Invoice> listUsersInvoices(
	 int user,
	 Date dateOrNull
)	
{ }​

 

 

 

 

 

 

 

 

 

 

 

반응형

'spring' 카테고리의 다른 글

@Transactional  (0) 2022.04.11
cmd 로 Spring 실행 하기 [Build]  (0) 2022.02.28
[Spring] 스프링 빈(Bean)의 개념과 생성 원리  (0) 2022.01.12
MVC구조 정리  (0) 2022.01.10
스프링 시큐리티(Spring Security)  (0) 2021.04.05