📝 상황
프론트에서 URL과 파라미터를 맞춰 백엔드로 전송했는데, 서버에서 값을 못 받는 에러가 발생하였다. 코드를 보니 컨트롤러 메서드에 어노테이션이 빠져있었다. 이때, “@RequestParam과 @RequestMapping 중 무엇을 써야 할지 헷갈려 정리해 보았다.”
✅ 1. 어노테이션이란?
소스 코드에 메타정보(설명) 를 붙여 프레임워크가 동작을 이해하도록 하는 표식.
ex) @GetMapping(이 메서드는 GET 요청 처리), @RequestParam(이 파라미터는 쿼리스트링에서 받아라) 같은 역할 지정을 함.
✅ 2. @RequestMapping vs @RequestParam
- @RequestMapping
- URL(경로) + HTTP 메서드 를 어떤 컨트롤러 메서드가 처리할지 “매핑”
- 실제 파라미터 값을 읽어오진 않음 (길 안내만)
- 축약형: @GetMapping, @PostMapping, @PutMapping … (전부 @RequestMapping의 특화 버전)
- @RequestParam
- 요청의 쿼리스트링/폼 필드 값을 메서드 파라미터에 바인딩
- 예: ?page=2&keyword=java → @RequestParam int page, @RequestParam String keyword
- 옵션: required, defaultValue 등
@RequestMapping = “매핑만!” / @RequestParam = “값까지 갖고 바인딩”
즉, 각자 역할이 다르다.
✅ 3. 전송 형태
- 경로/메서드 매핑은 @RequestMapping(또는 @GetMapping/@PostMapping)으로 반드시 필요
- 값 바인딩은 @RequestParam(또는 @ModelAttribute, @RequestBody 등 전송 방식에 맞는 것)을 사용
| 전송 형태 | 컨트롤러 예시 |
| GET 쿼리스트링 (/posts?keyword=java&page=2) | @GetMapping("/test.do") + (@RequestParam String keyword) |
| GET 경로 변수 (/posts/123) | @GetMapping("/ test.do /{id}") + (@PathVariable Long id) |
| POST JSON 본문 | @PostMapping("/ test.do ") + (@RequestBody ReqVO vo) |
| 여러 짧은 필드 묶음 | @GetMapping("/ test.do ") + (@ModelAttribute Param param) |
✅ 4. 체크리스트
- URL만 매핑: @GetMapping, @PostMapping(= @RequestMapping 계열)
- 쿼리/폼 값 받기: @RequestParam (필요 시 required=false, defaultValue)
- 경로 일부 받기: @PathVariable
- JSON/바디 받기: @RequestBody
- 여러 필드 묶어 받기: @ModelAttribute
'개발' 카테고리의 다른 글
| [Spring Boot] Eclipse Run Configurations의 Profile이란? (0) | 2025.10.19 |
|---|---|
| [Spring] Spring vs Spring Boot (0) | 2025.08.24 |
| [Spring/Web] 400 에러, GET vs POST (0) | 2025.08.12 |
| [Maven] Maven, clean install, clean package 이란 (0) | 2025.08.05 |
| [DB SQL] JOIN · WITH 절을 활용한 쿼리 최적화 (0) | 2025.07.31 |