Spring Boot 강좌2 : Spring MVC 개념과 Controller 이해하기

coldrice99·2024년 9월 27일
0

📌 TIL: Spring MVC란 무엇일까? & Controller 이해하기

오늘은 Spring MVC의 구조와 핵심 요소인 Controller에 대해 공부했다. 이를 통해 Spring MVC가 무엇인지, 그리고 Controller가 어떤 역할을 하는지에 대해 정리해보자.

1. Spring MVC란 무엇일까?

  • MVC 패턴: Model, View, Controller의 약자로 웹 애플리케이션을 구조적으로 설계하기 위한 디자인 패턴이다.

    • Model: 비즈니스 로직과 데이터를 처리하며, 데이터베이스와 상호작용하는 부분이다.
    • View: 사용자에게 보여지는 화면으로, JSP, Thymeleaf 등과 같은 템플릿 엔진을 통해 데이터를 표현한다.
    • Controller: 사용자의 요청을 받아 Model과 View를 연결해주는 중간다리 역할을 한다.
  • Spring MVC의 역할:

    • 요청이 들어오면 Controller가 해당 요청을 처리하고, 처리된 데이터를 Model에 담아 View로 전달한다.
    • 이러한 구조를 통해 애플리케이션의 유지보수성과 확장성이 높아진다.

2. DispatcherServlet의 역할

  • DispatcherServlet은 Spring MVC의 핵심 프론트 컨트롤러로, 모든 웹 요청을 중앙에서 처리한다.

  • 요청 처리 과정:

    1. 클라이언트가 요청을 보내면 DispatcherServlet이 이를 받아 적절한 Controller로 전달한다.
    2. Controller는 비즈니스 로직을 처리하고 결과를 반환한다.
    3. DispatcherServlet은 결과를 View로 전달하여 클라이언트에게 최종 응답을 보낸다.

3. Controller 이해하기

  • Controller란?: Spring MVC에서 Controller는 클라이언트의 요청을 받아 처리하는 클래스다. @Controller 애노테이션을 통해 정의되며, 각 메서드는 URL 요청과 매핑되어 요청을 처리한다.
  • Controller의 역할:
    • 클라이언트로부터 요청을 받는다.
    • 비즈니스 로직을 수행하거나 Model을 통해 데이터를 처리한다.
    • View 이름을 반환해 사용자에게 응답한다.

4. @RequestMapping 애노테이션을 활용한 API 관리

  • @RequestMapping은 URL 요청을 Controller의 메서드에 매핑하는 데 사용되며, 클래스 레벨과 메서드 레벨 모두에서 활용할 수 있다.
  • 하나의 Controller에서 유사한 성격의 API를 효율적으로 관리할 수 있어 API마다 별도의 파일을 만들 필요가 없다.
예시:
@Controller
@RequestMapping("/user")  // 클래스 레벨 매핑: /user 경로를 기본으로 설정
public class UserController {

    @GetMapping("/login")
    public String login() {
        // 로그인 처리
        return "login";
    }

    @GetMapping("/logout")
    public String logout() {
        // 로그아웃 처리
        return "logout";
    }

    @GetMapping("/signup")
    public String signup() { 
        // 회원가입 페이지 제공
        return "signup";
    }
    
    @PostMapping("/signup")
    public String registerUser(SignupRequestDto requestDto) {
        // 회원가입 처리
        return "redirect:/user/login";
    }
}
  • /user/login, /user/logout, /user/signup과 같이 유사한 경로를 한 Controller에서 관리할 수 있다.
  • @RequestMapping을 클래스 레벨에 사용하고, 각 메서드에 @GetMapping@PostMapping을 사용해 다양한 요청을 처리한다.

5. Model을 통한 데이터 전달

  • Controller에서 Model 객체를 통해 데이터를 View로 전달할 수 있다.
  • model.addAttribute("key", value) 형태로 데이터를 추가하면 View에서 해당 데이터를 사용할 수 있다.

🔑 핵심 정리

  • Spring MVC는 MVC 패턴을 통해 애플리케이션의 역할을 분리하고 효율적으로 관리한다.
  • DispatcherServlet은 모든 요청을 중앙에서 처리하며, Controller는 @RequestMapping 애노테이션을 통해 URL과 메서드를 매핑하여 효율적으로 API를 관리한다.
  • @RequestMapping@GetMapping, @PostMapping을 적절히 사용하면 유사한 API를 하나의 Controller에서 관리할 수 있다.

profile
서두르지 않으나 쉬지 않고

0개의 댓글