📌 초급 개발자를 위한 MVC 개념 및 모델1 vs 모델2 정리
✅ MVC(Model-View-Controller)는 웹 애플리케이션에서 비즈니스 로직, UI, 데이터 처리를 분리하는 아키텍처 패턴입니다.
✅ 이 패턴을 사용하면 코드의 재사용성이 증가하고 유지보수가 쉬워집니다.
✅ 초창기 웹 개발에서는 모델1(Model1) 방식
을 사용했지만, 이후 모델2(Model2)
방식으로 발전하였습니다.
✅ 1. MVC(Model-View-Controller)란?
MVC는 애플리케이션을 세 부분(Model, View, Controller)으로 나누어 설계하는 패턴입니다.
✔ Model(모델) → 데이터 & 비즈니스 로직
✔ View(뷰) → 사용자 인터페이스(UI)
✔ Controller(컨트롤러) → 요청을 처리하고 Model과 View를 연결
🔹 MVC 구조 흐름
1️⃣ 클라이언트가 요청 (브라우저 → 서버)
2️⃣ 컨트롤러가 요청을 받고(Model을 호출하여 데이터를 처리)
3️⃣ 모델이 데이터를 가공하여 컨트롤러에게 반환
4️⃣ 컨트롤러가 뷰(View)에 데이터를 전달
5️⃣ 뷰(View)는 사용자가 볼 수 있도록 화면을 렌더링하여 응답
✅ 2. 모델1(Model1) 방식이란?
✔ JSP 파일이 모든 역할(요청 처리, 데이터 처리, UI 표시)을 담당하는 방식
✔ 컨트롤러 없이 JSP 내부에서 Java 코드(<% %>
)를 사용하여 데이터를 처리
✔ 소규모 프로젝트에서 빠르게 개발 가능하지만, 유지보수 어려움
🔹 모델1 방식 예제 (JSP가 모든 역할 수행)
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<html>
<body>
<%
// 데이터베이스 연결
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// HTML과 Java 코드가 뒤섞여 있음
while (rs.next()) {
out.println("<p>이름: " + rs.getString("name") + "</p>");
}
%>
</body>
</html>
📌 💡 모델1 방식의 특징
✅ 빠르게 개발 가능 (초기 설정이 쉬움)
❌ 비즈니스 로직과 UI가 혼합되어 유지보수가 어려움
❌ 코드 재사용성이 낮고, 확장성이 부족
✅ 3. 모델2(Model2) 방식이란? (MVC 패턴 기반)
✔ JSP가 데이터를 직접 처리하지 않고, 컨트롤러(서블릿)에서 데이터를 처리한 후 JSP로 전달하는 방식
✔ 비즈니스 로직과 UI가 분리되어 유지보수가 용이함
✔ 대규모 프로젝트에서도 사용 가능
🔹 모델2 방식 예제 (JSP는 UI만 담당, 서블릿이 데이터 처리)
@WebServlet("/userlist")
public class UserController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserDao dao = new UserDao();
List<User> users = dao.getAllUsers();
request.setAttribute("users", users); // 데이터를 JSP로 전달
RequestDispatcher dispatcher = request.getRequestDispatcher("userlist.jsp");
dispatcher.forward(request, response);
}
}
✔ 서블릿(UserController
)이 요청을 받고 데이터를 처리한 후 JSP로 전달
🔹 JSP (View 역할, UI만 담당)
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.List, mypackage.User" %>
<%
List<User> users = (List<User>) request.getAttribute("users");
%>
<html>
<body>
<h2>사용자 목록</h2>
<ul>
<% for(User user : users) { %>
<li><%= user.getName() %></li>
<% } %>
</ul>
</body>
</html>
📌 💡 모델2 방식의 특징
✅ 비즈니스 로직과 UI가 분리되어 유지보수가 쉬움
✅ 컨트롤러가 중간에서 역할을 수행하여 코드 구조가 깔끔함
✅ 대규모 프로젝트에 적합 (Spring 같은 프레임워크와 호환 가능)
❌ 초기 설정이 모델1보다 복잡함
✅ 4. 모델1 vs 모델2 비교
비교 항목 | 모델1 방식 (JSP 중심) | 모델2 방식 (MVC 패턴) |
---|---|---|
구조 | JSP 파일이 모든 역할 수행 | 서블릿(Controller)이 비즈니스 로직 담당, JSP(View)와 분리 |
코드 유지보수 | ❌ 어려움 (Java 코드 + HTML 혼합) | ✅ 쉬움 (역할이 분리됨) |
재사용성 | ❌ 낮음 (비즈니스 로직이 JSP에 포함됨) | ✅ 높음 (Controller가 로직을 처리) |
적합한 프로젝트 | 작은 규모의 빠른 개발 | 대규모 프로젝트, 협업이 필요한 환경 |
속도 | ✅ 초기 개발 속도 빠름 | ❌ 초기 설정 필요하지만 유지보수 용이 |
✅ 5. 결론 (초급 개발자로서 알아야 할 핵심 내용)
✔ 모델1 방식은 빠르게 개발할 수 있지만, 유지보수가 어렵고 비효율적이므로 실무에서는 거의 사용되지 않음.
✔ 모델2 방식은 MVC 패턴을 따르며, 비즈니스 로직과 UI가 분리되어 유지보수가 용이하여 실무에서 일반적으로 사용됨.
✔ Spring과 같은 프레임워크는 모델2 기반의 MVC 패턴을 사용하므로, 초급 개발자는 모델2 방식을 익혀야 함.
🚀 이제 MVC와 모델1 vs 모델2의 차이를 확실히 이해했을 거야! 😊
👉 다음 단계: Spring MVC 패턴 이해하기!
'웹 개발 > 웹 개발 기초' 카테고리의 다른 글
EL, JSTL이란? (0) | 2025.02.07 |
---|---|
서블릿 매핑 방식 (0) | 2025.02.07 |
HTTP전달방식(GET방식과 POST방식) (0) | 2025.02.07 |
포워딩, 리다이렉트 비교 (0) | 2025.02.07 |
URL과 URI의 차이 (1) | 2025.02.05 |