728x90
httpServletRequest.getParameter() String 값을 반환
httpServletRequest.getAttribute() Object 값을 반환
@RequestMapping("/test")
public String test(HttpServletRequest req) {
String userId = req.getParameter("userId");
return "test";
}
@RequestParam
query string 방식으로 url을 통해 parameter로 값을 받아옵니다.
갖고있는 속성으로는 value, required, defaultValue가 있습니다.
- value는 query string으로 받아오는 key값을 의미하고 뒤에 오는 변수에 해당 값을 바인딩합니다.
- required 기본 값은 true입니다. parameter가 반드시 url에 담겨있어야 합니다. 없을경우 400값을 반환하게 됩니다.
- defaultValue는 디폴트 값을 의미합니다. ( value="~" / name="~" ) 가능
@RequestMapping(value="/test", method=RequestMethod.GET)
public String test(@RequestParam(value="userId", defaultValue="ooeunz" required ="false") String userId) {
return "test";
}
@PathVariable
url에 입력한 것을 변수처럼 받아올 수 있습니다. 그러면 studentView에서 ${studentID} 이부분에 값이 들어가게 됩니다.
@RequestMapping("/student/{studentId}")
public String etStudent(@PathVariable String studentId, Model model) {
System.out.println(studentId);
model.addAttribute("studentId",studentId);
return "student/studentView";
}
@RequestBody
GET방식은 request packet에 http body가 존재하지 않습니다.
따라서 @RequestBody로받으려면 반드시 POST 방식을 사용해야 합니다.
@RequestBody는 JSON이나 XML과 같은 데이터를 받거나 DTO/VO 객체 전체를 받을 경우 사용합니다.
@RequestMapping("/test")
public String test(@RequestBody Map<String, Obejct> obj) {
Account account = obj.get("account");
return "test";
}
@ModelAttribute
HTTP Body 내용은 multipart/form-data 형태 입니다.
multipart/form-data 형태의 HTTP Body와 HTTP 파라미터들을 생성자나 수정자로 주입 합니다.
JSP에서 Form 안에 input 값을 담아 보낼 때 유용하게 사용합니다.
DTO/VO와 같이 객체 전체로 받을 경우 @ModelAttribute로 받을 수 있습니다.
자동으로 데이터를 바인딩할 수 있습니다. 검증하다 걸리면 BindException을 뱉어냅니다..
@RequestMapping("/test")
public String test(@ModelAttribute UserDto user) {
System.out.println(user.getUserId());
return "test";
}
728x90