모델
🔹 모델1
- 구성: JSP + JavaBeans (가끔 서블릿)
- 흐름: 클라이언트 → JSP → 직접 처리 + 출력
- 특징:
- JSP가 모든 로직을 처리 (비즈니스 로직 + 프레젠테이션 로직)
- 컨트롤러가 없음
- 구조가 단순하고 빠르게 개발 가능 (소규모 프로젝트에 적합)
- 유지보수가 어렵고, 재사용성과 확장성이 낮음
💡 예시:
<%
String name = request.getParameter("name");
out.println("안녕하세요, " + name + "님");
%>
🔹 모델2 (MVC)
- 구성: JSP + 서블릿 + JavaBeans
- 흐름: 클라이언트 → 서블릿(Controller) → 비즈니스 처리(Model) → JSP(View)
- 특징:
- Controller (Servlet) : 흐름 제어
- Model (Java 클래스) : 데이터 처리 및 로직 담당
- View (JSP) : 출력만 담당
- 웹 애플리케이션을 역할에 따라 분리하는 구조
- → 관심사 분리로 코드 관리가 쉬워지고 재사용성 증가!
💡 예시 흐름:
- 사용자가
/login 요청
- 서블릿(LoginController)이 요청을 받아서 서비스 처리
- 처리된 결과를 JSP로 포워딩 (
loginResult.jsp)
- JSP는 데이터 출력만 담당
🔄 요약 비교
| 항목 | Model 1 | Model 2 (MVC) |
|---|
| 구조 | JSP 중심 | Controller 중심 |
| 로직 위치 | JSP 안에 포함 | Controller/Model 분리 |
| 유지보수 | 어려움 | 용이 |
| 테스트/확장성 | 낮음 | 높음 |
| 개발 난이도 | 쉬움 | 약간 복잡 |
| 사용 사례 | 간단한 앱, 프로토타입 | 대규모 웹 애플리케이션 |