본문 바로가기
IT개발/Spring Framework

Spring MVC에서 컨트롤러 메소드의 매개변수 타입

by 시간기억자 2025. 1. 17.
반응형

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 요청 본문을 객체로 변환.



반응형

댓글