본문 바로가기
Java 및 JSP

[JSP] MVC1과 MVC2

by jane.dev 2021. 8. 13.
반응형
MVC(Model-View-Controller )
소프트웨어의 비즈니스 로직과 화면을 구분하는데에 중점을 둠
이러한 구분은 더 나은 업무의 분리와 향상된 관리를 제공

 

1. Model: 데이터와 비즈니스 로직을 관리

    - 포함되어야 할 데이터가 무엇인지 정의하고, 데이터의 업데이트된 내용을 모델을 일반적으로 뷰에게 알림

2. View: 레이아웃과 화면을 처리

    - 데이터를 보여주는 방식을 정의하며 표시할 데이터는 모델로부터 받음

3. Controller: 명령을 모델과 뷰 부분으로 라우팅

    - 사용자의 입력을 모델에게 처리하게 하고 해당 데이터를 뷰로 전송

 

MVC1

웹 브라우저의 요청을 JSP 페이지가 받아 처리

단순한 구조로 쉬운 구현이 가능하지만, 하나의 JSP 파일 내부에 비즈니스 로직을 처리하기 위한 Java 코드와 웹 브라우저에 결과를 나타내기 위한 HTML 코드가 섞여 가독성이 떨어지고 규모가 큰 프로젝트에서는 코드가 많아질 수록 유지보수가 어려워짐

 

MVC2

웹 브라우저의 요청을 하나의 서블릿(단일 진입점)이 받아 처리하고 그 결과를 JSP 페이지로 포워딩

- 모델은 비즈니스와 관련된 로직만 처리하고

- 뷰는 사용자에게 알맞은 화면을 보여주는 역할만 수행

- 컨트롤러는 사용자의 요청에 대해 알맞은 모델을 사용하고 사용자에게 보여줄 뷰를 선택

유지보수가 쉬워지며 규모를 쉽게 확장 가능

 

흐름

1. 웹 브라우저가 전송한 HTTP 요청을 받아 요청 방식에 맞게 doGet(), doPost()를 호출

2. 웹 브라우저가 어떤 기능을 요청했는지 분석

3. 알맞은 모델을 호출하면, 모델은 컨트롤러가 요청한 작업을 처리한 후 알맞은 결과를 컨트롤러에게 전달

    (처리한 결과 값을 저장하는 객체는 보통 자바 빈)

4. 모델로부터 전달받은 결과물을 알맞게 가공한 후, request나 session의 setAttribute() 메서드를 이용해 결과 값을 속성에 저장

5. 웹 브라우저에게 결과를 전송할 JSP 페이지(뷰)를 선택하고 해당 JSP로 포워딩 혹은 리다이렉트

'Java 및 JSP' 카테고리의 다른 글

[JSP] DAO 클래스와 VO 클래스  (0) 2021.08.15
[JSP] URL - Pattern(디렉토리 패턴, 확장자 패턴)  (0) 2021.08.14
[JSP] JSTL 활용  (0) 2021.08.12
[JSP] EL과 JSTL  (0) 2021.08.10
[Servlet] Java 서블릿  (0) 2021.08.09