-
대부분 생략이 가능한 것들이 많은데 가독성을 위해 웬만하면 다 적어주는게 좋다.
-
거의 org.springframework.web.bind.annotation 경로에 있다.
-
@PathVariable : 중괄호에 명시된 값을 변수로 받는다.
- @RequestMapping("/user/{id}")
- public String userInfo(@PathVariable("id") String id)
-
@RequestParam : http 요청 파라미터를 변수로 받는다.
- @RequestParam(value = "page", required = false, defaultValue = "1") Integer page
- required와 defaultValue 사용가능, required = true 인데 요청 필드가 없으면 400 에러
- 요청예제) ?page=3
- 원시타입일 경우 어노테이션 안붙여도 자동으로 알아먹음ㅋㅋ
-
@ModelAttribute : http 요청 파라미터를 VO로 받는다.
- public ModelAndView search(@ModelAttribute User user)
- 레퍼런스타입일 경우 어노테이션 안붙여도 자동으로 알아먹는다. 즉 원시타입은 RequestParam으로, 객체타입은 ModelAttribute로
- 요청 파라미터가 많을 경우 VO로 받는게 가독성이나 코드효율 상 좋다.
- 이걸 커맨드 객체라고도 한다.
- 메소드 레벨에서 annotation을 선언하면 ModelMap.addAttribute와 같은 기능을 한다.
- ex. @ModelAttribute("users")이면 ModelMap.addAttribute("users", 메소드의 리턴값)
-
@RequestBody : HTTP 요청의 body 부분을 그대로 변수에 넣는다. XML, JSON 일때 이것을 주로 사용한다.
- public String message(@RequestBody KakaobotRequest request)
- 예를들어 json 구조처럼 KakaobotRequest.java 를 맞춘다면 파싱해서 잘 들어갈 것이다.
-
@CookieValue : 요청의 쿠키정보를 가져온다.
-
@RequestHeader : 요청헤더 정보를 가져온다.
- @RequestHeader("host") String host