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 |