개강한 공대생 2024. 8. 27. 13:39

MVC(Model-View-Controller)는  웹 애플리케이션 같은 걸 만들 때 사용하는 디자인 패턴이다.

애플리케이션을 만들 때 구조적으로 나누어서 더 깔끔하고 효율적으로 만들 수 있게 해준다.

 

Model은 데이터와 로직, View는 화면에 보여줄 부분, Controller는 둘 사이를 연결해 준다.

특히 Controller는 Model에서 데이터를 가져와서 View로 보내주고, 사용자로부터의 반응을 받아서 Model에 다시 반영하는 역할을 한다. 중간에서 모든 걸 조율하는 거다.

 

이렇게 나누면 나중에 수정할 때도 더 편하고, 유지보수하기도 쉬워진다.

 

MVC 사용 예

 

Model (모델) - 이름, 이메일, 비밀번호 같은 것들. 이 정보들은 어디에 저장될까? 바로 Model에 저장된다. 예를 들어, 데이터베이스에 저장된 사용자 정보가 Model에 해당된다. 여기서는 데이터를 처리하고, 검증하고, 필요한 로직들을 다룬다.

 

public class User {
    private String username;
    private String password;

    // 생성자, getter, setter 등등...
}

 

View (뷰) - 사용자가 아이디와 비밀번호를 입력하는 화면, 사용자가 볼 수 있는 화면, 즉 UI를 담당하는 부분

 

<form action="/login" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username">
    
    <label for="password">Password:</label>
    <input type="password" id="password" name="password">
    
    <button type="submit">Login</button>
</form>

 

Controller (컨트롤러) - 사용자가 아이디와 비밀번호를 입력하고 로그인 버튼을 눌렀을 때 그 데이터를 받아서 처리해주는 부분, Controller는 사용자가 입력한 데이터를 받아서, Model과 소통하고, 필요한 작업을 수행한 다음, 결과를 View에 다시 보여주는 역할을 한다.

 

public class LoginController {

    private UserService userService; // Model과 통신하는 서비스 클래스

    public String login(String username, String password) {
        User user = userService.findUserByUsername(username);
        
        if (user != null && user.getPassword().equals(password)) {
            return "로그인 성공!"; // 성공 화면으로 이동
        } else {
            return "로그인 실패!"; // 실패 화면으로 이동
        }
    }
}

 

전체적인 흐름

1. 사용자가 로그인 페이지(View)에서 아이디와 비밀번호를 입력하고 제출

2. Controller가 그 데이터를 받아서, Model(UserService)을 통해 데이터베이스에서 사용자를 찾고 비밀번호를 확인

3. 확인된 결과를 바탕으로 View를 통해 사용자에게 로그인 성공 또는 실패를 보여줌