@RequestMapping("/test")
public String test(HttpServletRequest req) {
String userId = req.getParameter("userId");
return userId;
}
String을 반환
@RequestMapping("/test")
public String test(HttpServletRequest req) {
String userId = req.getAttribute("userId");
return userId;
}
Object를 반환
@RequestMapping(value="/test", method=RequestMethod.GET)
public String test(@RequestParam(value="userId", defaultValue="ooeunz") String userId) {
return "test";
}
@Pathvariable
어노테이션은 RequestMapping의 {email}에 매핑된다, 쿼리스트링과 path value의 차이를 알면 쉽다@RequestMapping(value="/test/{email}", method=RequestMethod.GET)
public String test(@PathVariable("email") String email) {
return "test";
}
@RequestMapping("/test")
public String test(@RequestBody Map<String, Obejct> obj) {
Account account = obj.get("account");
return "test";
}
쿼리 파라미터로 받게되는 변수를 객체에 주입
즉 @ModelAttrubute
를 사용하면 쿼리파라미터의 데이터들이 객체의 프로퍼티로 바인딩된다.
프로퍼티에 해당하는 쿼리 파라미터가 없다면 기본값이 들어간다.
생략이 가능하다.
커맨드객체라고도 부른다.
request영역에 자동으로 저장된다.
public class Criteria {
private int page;
private int perPageNum;
// getter, setter
}
@RequestMapping(value="/listPage", method=RequestMethod.GET)
public void listPage(@ModelAttribute("cri") Criteria cri, Model model) throws Exception {
logger.info(cri.toString());
...
}
이런 코드가 있고
/board/listPage?page=1&perPageNum=10
으로 요청을 보내면 cri에 위 값들이 자동으로 바인딩된다.