Spring에서 Controller의 전달인자…
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(@RequestParam("no") int factroyId, SearchCriteria criteria)
{
//...
}
위의 경우/read?no=1와 같이 url이 전달될 때 no 파라메터를 받아오게 됩니다.
@RequestParam 어노테이션의 괄호 안의 경우 전달인자 이름(실제 값을 표시)입니다.
이렇게@RequestParam의 경우 url 뒤에 붙는 파라메터의 값을 가져올 때 사용을 합니다.
@PathVariable 사용하기
Type 2의 URL을 처리할 때는@PathVariable을 사용하게 됩니다.
@PostMapping("delete/{idx}")
@ResponseBody
public JsonResultVo postDeleteFactory(@PathVariable("idx") int factoryIdx) {
return factoryService.deleteFacotryData(factoryIdx);
}
위에 예제 코드처럼PathVariable의 경우 url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용합니다.
실제로 사용은?
물론@RequestParam또는@PathVariable하나만 사용하는 것이 아닌 복합적으로 사용을 하기도 합니다.
@GetMapping("/user/{userIdx}/invoices")
public List<Invoice> listUsersInvoices(
@PathVariable("userIdx") int user,
@RequestParam(value = "date", required = false) Date dateOrNull
)
{ }
참고
@GetMapping(value = {"/notice/{idx}"}, produces = Constants.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Test> notice(@PathVariable Integer idx) {
}
이렇게도 바로 사용할 수 있음.
'Java' 카테고리의 다른 글
[ Spring Boot ] Project 만들기 연습 1(프로젝트 생성하기) (0) | 2021.06.05 |
---|---|
자바 직렬화(implements Serializable)를 하는 이유 참고 사이트 (0) | 2021.05.09 |
[Spring Boot] Controller 상세하게 작성하는 방법 (0) | 2021.04.09 |
메이븐 설치(Maven) 및 환경변수 설정 (0) | 2021.04.09 |
java mail maven (gmail, naver) 참고 사이트 (0) | 2021.03.26 |