쯔이's Dev

mvc구조 본문

카테고리 없음

mvc구조

jjhim531 2025. 1. 21. 04:14
반응형

소프트웨어 디자인 패턴 중 하나.

애플리케이션을 세 가지 역할(Model, View, Controller)로 분리하여 유지보수성과 확장성을 높이는 구조

1. MVC의 개념

MVC는 다음 세 가지 주요 구성 요소로 이루어져 있다.

(1)  Model (모델)

  • 역할 :
    • 애플리케이션의 데이터와 비즈니스 로직을 담당.
    • 데이터를 처리하고, 데이터베이스와의 상호작용을 수행.
    • 상태 변경 및 로직을 포함하며, 뷰(화면)와 독립적으로 동작.
  • 예 :
    • DAO(Data Access Object) 클래스 (DB 작업)
    • Service 클래스 (비즈니스 로직 처리)
    • DTO / VO (데이터 객체)

(2)  View (뷰)

  • 역할 :
    • 사용자에게 정보를 보여주는 UI(User Interface) 담당.
    • 사용자의 입력을 받아 컨트롤러에 전달.
    • 모델에서 받은 데이터를 사용자 친화적으로 렌더링.
  • 예 :
    • HTML, JSP, React(프론트엔드)
    • 콘솔 출력, 웹 페이지, 모바일 화면

(3)  Controller (컨트롤러)

  • 역할 :
    • 사용자 입력을 받아 처리하고, 모델과 뷰를 연결하는 역할.
    • 뷰에서 전달받은 데이터를 모델로 넘기고, 모델에서 데이터를 가져와 뷰로 전달.
    • 흐름을 제어하는 역할을 수행.
  • 예 :
    • Servlet (Java Web)
    • Spring의 @Controller 클래스
    • Express.js의 라우터

 


 

2.  MVC의 흐름 (데이터 처리 과정)

  1. 사용자(클라이언트)가 요청을 보냄 (예: 웹사이트에서 버튼 클릭).
  2. 컨트롤러(Controller)가 사용자의 요청을 받아서 처리.
  3. 모델(Model)에서 데이터를 조회하거나 업데이트함.
  4. 컨트롤러(Controller)는 모델에서 가져온 데이터를 뷰(View)에 전달.
  5. 뷰(View)가 사용자에게 데이터를 보여줌.

 


 

3. MVC 패턴의 장점

  1. 유지보수 용이성
    • 역할이 분리되어 수정 시 영향 범위가 작음.
  2. 재사용성 증가
    • 비즈니스 로직과 UI를 분리하여 코드 재사용 가능.
  3. 협업 용이
    • 백엔드 개발자와 프론트엔드 개발자가 독립적으로 작업 가능.
  4. 가독성 및 확장성 향상
    • 새로운 기능을 추가할 때 기존 코드에 미치는 영향을 최소화.

 


 

4. MVC 패턴의 단점

  1. 복잡한 프로젝트에서 코드가 많아질 수 있음.
  2. 처음 설정 시 많은 작업이 필요함.
  3. 모든 애플리케이션에 적합하지 않음.

 

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/user/{id}")
    public String getUser(@PathVariable int id, Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "userView"; // View (userView.jsp)
    }
}
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User getUserById(int id) {
        return userRepository.findById(id).orElse(null);
    }
}
<h1>사용자 정보</h1>
<p>이름: ${user.name}</p>
<p>이메일: ${user.email}</p>

 

5. MVC 패턴의 변형 (확장 패턴)

  • MVVM (Model-View-ViewModel):
    • 프론트엔드 프레임워크(React, Vue, Angular)에서 주로 사용.
    • 데이터 바인딩과 상태 관리를 강화한 패턴.
  • MVP (Model-View-Presenter):
    • 프레젠터가 컨트롤러 역할을 대신하며, 뷰와의 의존성을 더 낮춤.

 


 

6. MVC 패턴의 적용 사례

  • 웹 애플리케이션:
    • Java의 Spring MVC, ASP.NET MVC, Ruby on Rails 등.
  • 데스크톱 애플리케이션:
    • Java Swing (JFrame, JPanel), C# WinForms 등.
  • 모바일 애플리케이션:
    • Android의 MVC 아키텍처.
728x90
반응형