HTTP 요청 파라미터를 메서드의 인자로 1:1 맵핑할 때(전달받을 때) 사용하는 어노테이션
주로 URL 끝에 ?key=value 형태로 전달되는 쿼리 파라미터(query parameter)를 추출하는 데 사용
GET 방식 이나 POST 방식에서 전송된 데이터를 추출 가능
파라미터 이름과 요청 파라미터 이름이 다를 경우 @RequestParam("요청 파라미터 이름")으로 명시
Content-Type이 application/x-www-form-urlencoded 또는 multipart/form-data인 경우에만 사용 가능
@GetMapping("/boards")
public String boardList(Model model, @ModelAttribute("cri") Criteria cri,
@RequestParam(value = "keyword", defaultValue = "") String keyword) {
List<Board> boardList = boardService.getPageList(cri);
Pagination pagination = new Pagination(boardService.getCountBoard(), cri);
// 계산된 페이지 정보 저장
cri.setPagination(pagination);
model.addAttribute("boardList", boardList);
model.addAttribute("pagination", pagination);
model.addAttribute("keyword", keyword);
return "board/list";
}
}
@GetMapping
- 요청 매개변수가 URL의 쿼리 문자열(query string)에 포함되어 전송
- http://localhost:8888/board/boards?keyword=안
@PostMapping
- 요청 매개변수가 HTTP 요청 본문(body)에 포함되어 전송
(boolean) required : 파라미터의 값의 필수 여부를 나타내는 옵션
- required=ture : 기본 설정, 파라미터 값이 전달되지 않으면 Exception(Bad Request 404) 발생
- required=false
: 파라미터 값이 전달되 않으면 null 전달
: int형은 null값 허용하지않으므로 참조 타입인 Integer를 사용
: defaultValue로 속성 지정하여 에러 방지 가능
(String) defaultValue : 요청 매개변수가 제공되지 않았거나 값이 비어 있는 경우 폴백으로 사용할 기본 값
Content-Type : application/x-www-form-urlencoded
- HTML Form에서 데이터를 전송하기 위해 사용되는 인코딩 방식 : Key-value 형태
- @GetMapping : 쿼리 문자열(query string)로 데이터를 받을 수 있다
- @PostMapping : HTTP 요청 본문에서 데이터를 받을 수 있다
Content-Type : multipart/form-data
- 파일 업로드 등의 다중 데이터를 전송하는 데 사용되는 인코딩 방식
- 파일을 바이너리로 인코딩한 후 HTTP 요청 본문에 데이터를 담아 POST 요청을 전송
- @GetMapping
: 전송 불가
: Get방식은 URL 쿼리 문자열에서 데이터를 추출하여 바인딩하기 때문
- @PostMapping
: @RequestParam 어노테이션을 사용하여 HTTP 요청 본문에서 데이터를 추출하여 바인딩
Content-Type : application/json
- JSON 형식의 데이터(키-값 쌍(key-value))는 key=value 형태로 전달되는 쿼리 파라미터(query parameter)의 형태로 전달되지 않기 때문에 @RequestParam 어노테이션으로 추출할 수 없다