@RequestParam은 HTTP 요청 파라미터(Query String, Form Field)를 컨트롤러 메서드의 파라미터로 직접 바인딩해주는 Spring MVC 애노테이션입니다.
?key=value)이나 form 필드의 key=value 형식입니다.DispatcherServlet이 먼저 가로챕니다.@RequestParam이 붙은 파라미터를 RequestParamMethodArgumentResolver가 처리합니다.HttpServletRequest.getParameter("keyword") 등으로 파라미터 값을 꺼냅니다.int, boolean, List<String> 등으로 자동 타입 변환합니다.TypeMismatchException 발생@RequestParam("파라미터명")에 해당하는 값을 찾아 바인딩합니다.required=true일 경우 → 400 Bad Request 예외 발생defaultValue가 지정되어 있다면 해당 값을 사용GET /search?keyword=spring&page=2
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword,
@RequestParam(value = "page", required = false, defaultValue = "1") int page) {
// DispatcherServlet이 아래처럼 처리
// keyword = request.getParameter("keyword") → "spring"
// page = request.getParameter("page") → "2" → int 변환
}
<form action="/search" method="get">
<input type="text" name="keyword">
<input type="number" name="page" value="1">
<button type="submit">검색</button>
</form>
GET /search?keyword=스프링&page=1
@GetMapping("/search")
public String search(@RequestParam String keyword,
@RequestParam(defaultValue = "1") int page,
Model model) {
model.addAttribute("keyword", keyword);
model.addAttribute("page", page);
return "searchResult";
}
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">업로드</button>
</form>
enctype="multipart/form-data" 설정은 파일 업로드에 필수@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
System.out.println("업로드된 파일명: " + file.getOriginalFilename());
return "uploadSuccess";
}
@RequestParam 상세 속성| 속성 | 설명 | 예시 |
|---|---|---|
| value | 요청 파라미터 이름 | @RequestParam("page") int page |
| required | 필수 여부 (기본값: true) | @RequestParam(required = false) |
| defaultValue | 기본값 지정 | @RequestParam(defaultValue = "1") |