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

+ Recent posts