Java MVC 패턴

2025. 2. 14. 06:17IT/기타

반응형

Java에서 MVC(Model-View-Controller) 패턴은 애플리케이션을 세 가지 역할로 분리하여 유지보수성과 확장성을 높이는 디자인 패턴입니다.

1. Model (모델)

  • 애플리케이션의 데이터, 비즈니스 로직을 관리.
  • 데이터베이스와 직접 통신하거나 데이터를 처리하는 역할.
  • 예: User, Product, Order 클래스 등.
public class User {
    private String name;
    private String email;

    // getter, setter
}

 

2. View (뷰)

  • 사용자에게 보여지는 화면 부분.
  • JSP, HTML, Thymeleaf 등이 해당.
  • 사용자가 입력한 데이터를 Controller에 전달하고, Controller가 전달한 데이터를 화면에 출력.
<%@ page import="model.User" %>
<html>
<body>
    <h1>User Information</h1>
    <p>Name: ${user.name}</p>
    <p>Email: ${user.email}</p>
</body>
</html>

 

3. Controller (컨트롤러)

  • Model과 View를 연결하는 역할.
  • 사용자의 요청을 받고, 해당 요청을 처리한 후 결과를 View에 전달.
  • Java의 Servlet, Spring Controller 등이 해당.
@WebServlet("/user")
public class UserController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User();
        user.setName("John Doe");
        user.setEmail("john@example.com");

        request.setAttribute("user", user);
        RequestDispatcher dispatcher = request.getRequestDispatcher("user.jsp");
        dispatcher.forward(request, response);
    }
}

 

MVC 흐름

1. 사용자가 View를 통해 요청을 보냄.

2. Controller가 요청을 받고 필요한 비즈니스 로직을 수행하기 위해 Model을 호출.

3. Model은 데이터베이스나 다른 데이터 소스를 처리하고 결과를 반환.

4. Controller는 결과를 받아 View에 전달.

5. View는 사용자에게 최종 결과를 출력.

 

Spring Framework에서 MVC

  • Spring은 @Controller, @RestController, @Service, @Repository 등을 제공하여 MVC 패턴을 손쉽게 구현할 수 있게 지원합니다.
  • 예 
@Controller
public class UserController {
    @GetMapping("/user")
    public String getUser(Model model) {
        User user = new User("Jane Doe", "jane@example.com");
        model.addAttribute("user", user);
        return "user"; // user.jsp
    }
}

 

MVC 패턴의 장점

  • 역할 분리로 인해 유지보수성과 확장성이 향상.
  • 재사용성: Model, View를 독립적으로 개발 가능.
  • 유연성: 변경 사항이 다른 부분에 미치는 영향을 최소화.

Java에서 웹 개발을 할 때 MVC 패턴은 필수적으로 사용되는 설계 패턴이며, 특히 Spring MVC는 현재까지도 가장 많이 사용되는 프레임워크입니다.

 

 

반응형

'IT > 기타' 카테고리의 다른 글

사용자 요구사항 도출 기법  (0) 2025.02.16
디자인 싱킹(Design Thinking)  (0) 2025.02.16
String.valueOf 와 (String)의 차이(ㅇ)  (1) 2025.02.13
셀 스크립트 리다이렉션 로그  (0) 2025.02.13
텐서플로우  (3) 2025.02.12