Spring MVC에서 컨트롤러 메소드의 매개변수 타입
1. Model
설명 : Model은 컨트롤러에서 뷰로 데이터를 전달하기 위해 사용하는 객체입니다. 뷰에 데이터를 추가할 수 있도록 도와줍니다.
사용 예: model.addAttribute("key", value) 메소드를 사용하여 데이터를 추가합니다.
예시:
@RequestMapping("/display")
public String display(Model model) {
model.addAttribute("message", "Hello, World!");
return "displayView"; // displayView.jsp 또는 displayView.html로 이동
}
2. @RequestParam
설명 : HTTP 요청의 파라미터를 메소드의 매개변수로 받을 때 사용됩니다. 주로 GET 요청에서 쿼리 스트링을 통해 전달된 값을 받을 때 사용합니다.
사용 예 : URL에 포함된 파라미터를 메소드의 매개변수로 매핑합니다. @RequestParam("paramName")을 사용하여 특정 파라미터를 지정할 수 있습니다.
@RequestMapping("/greet")
public String greet(@RequestParam("name") String name, Model model) {
model.addAttribute("message", "Hello, " + name);
return "greetView"; // greetView.jsp 또는 greetView.html로 이동
}
3. @ModelAttribute
설명 : HTTP 요청의 데이터를 객체로 매핑하는 데 사용됩니다. 주로 폼 데이터와 같은 복잡한 데이터 구조를 처리할 때 사용됩니다.
사용 예 : 폼에서 전송된 데이터를 DTO(Data Transfer Object)로 매핑하여 사용합니다.
@PostMapping("/submitForm")
public String submitForm(@ModelAttribute User user) {
// User 객체에 폼 데이터가 자동으로 매핑됨
return "formSuccess"; // formSuccess.jsp 또는 formSuccess.html로 이동
}
4. @PathVariable
설명 : URL 경로에서 변수를 추출할 때 사용됩니다. RESTful 서비스에서 경로에 포함된 변수를 쉽게 받을 수 있습니다.
사용 예 : URL 매핑에서 변수를 사용하여 동적으로 데이터를 가져올 때 사용됩니다.
@GetMapping("/users/{id}")
public String getUser(@PathVariable("id") Long id, Model model) {
// id에 해당하는 사용자 정보를 가져와서 모델에 추가
return "userView"; // userView.jsp 또는 userView.html로 이동
}
5. HttpServletRequest
설명 : HTTP 요청에 대한 모든 정보를 포함하는 객체입니다. 요청 헤더, 바디, 파라미터 등을 직접적으로 다룰 수 있습니다.
사용 예 : 요청의 세부 정보를 직접적으로 다뤄야 할 때 사용합니다.
@RequestMapping("/requestInfo")
public String requestInfo(HttpServletRequest request, Model model) {
String clientIp = request.getRemoteAddr();
model.addAttribute("clientIp", clientIp);
return "requestView"; // requestView.jsp 또는 requestView.html로 이동
}
6. HttpSession
설명 : 사용자의 세션 정보를 관리하는 객체입니다. 세션에 데이터를 저장하거나 세션 정보를 가져올 때 사용됩니다.
사용 예 : 로그인 상태를 유지하거나 사용자의 정보를 세션에 저장할 때 사용합니다.
@RequestMapping("/sessionExample")
public String sessionExample(HttpSession session) {
session.setAttribute("username", "홍길동");
return "sessionView"; // sessionView.jsp 또는 sessionView.html로 이동
}
7. ModelAndView
설명 : 모델과 뷰 정보를 함께 처리하는 객체입니다. 모델 데이터를 설정하면서 동시에 어떤 뷰를 사용할 것인지 지정할 수 있습니다.
사용 예: 뷰와 데이터를 동시에 반환할 때 사용합니다.
예시 :
@RequestMapping("/modelAndViewExample")
public ModelAndView modelAndViewExample() {
ModelAndView modelAndView = new ModelAndView("viewName");
modelAndView.addObject("message", "Hello, ModelAndView!");
return modelAndView; // viewName.jsp 또는 viewName.html로 이동
}
8. @RequestBody
설명 : HTTP 요청의 본문(body)을 Java 객체로 변환하여 매핑합니다. 주로 JSON 형식의 데이터를 받을 때 사용합니다.
사용 예 : RESTful API에서 JSON 데이터를 처리할 때 사용합니다.
@PostMapping("/api/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
// User 객체를 생성하고 저장하는 로직
return ResponseEntity.ok(user); // 생성된 사용자 반환
}
요약
- Model: 뷰로 데이터를 전달.
- @RequestParam: 요청 파라미터를 매핑.
- @ModelAttribute: 폼 데이터를 객체로 매핑.
- @PathVariable: URL 경로에서 변수 추출.
- HttpServletRequest: HTTP 요청 정보 제공.
- HttpSession: 세션 정보를 관리.
- ModelAndView: 모델과 뷰 정보를 함께 처리.
- @RequestBody: HTTP 요청 본문을 객체로 변환.
댓글