[MVC] MVC 패턴에 대해 알아보자!

2
post-thumbnail

0. MVC 패턴이란?

모델 2 구조는 모델 1구조와 달리 웹브라우저 사용자의 요청을 서블릿이 받습니다. 서블릿은 웹브라우저의 요청을 받아 View로 보여줄것인지 Model로 보내줄것인지 정하여 전송해줍니다. 여기서 View페이지는 사용자에게 보여주는 역할만 담당하고 실질적인 기능의 부분은 Model에서 담당합니다. 모델2 방식의 경우 실질적으로 보여지는 HTML과 JAVA 소스를 분리 해놓았기 때문에 모델1방식에 비해 개발을 확장시키기도 쉽고 유지보수하기도 쉽습니다. (코딩을 좀 더 깔끔하게 할 수 있습니다.)

M ( model-> domain(DTO) / DAO / SQL / Service )

M은 Model을 가리키고 Model이란 프로그램이 작업하는 세계관의 요소들을 개념적으로 정의한 것이라고 볼 수 있다.
예를 들어 음식점 무인 포스기를 개발한다고 가정해보자. 무인포스기가 정상적으로 목표하는 작업을 수행하기 위해서는 우선 메뉴가 있어야하고, 메뉴를 담을 수 있는 장바구니, 해당 메뉴의 수량, 결제수단, 할인정책 등등이 필요할 것이다.
이처럼 프로그램이 목표하는 작업을 원활하게 수행하기 위해 필요한 물리적 개체, 규칙, 작업등의 요소들을 구분되는 역할로써 정의해놓은게 Model이 된다. Model은 DTO와 DAO로 분류할 수 있다.

■ V ( view -> jsp / index )

V는 View를 가리키고 사용자가 보는 화면에 입출력 과정 및 결과를 보여주기 위한 역할을 한다. 입출력의 순서나 데이터 양식은 컨트롤러에 종속되어 결정된다.

■ C ( controller )

C는 Controller를 가리킨다. controller는 model과 view를 연결 시켜주는 다리 역할을 함과 동시에 도메인 객체들의 조합을 통해 프로그램의 작동 순서나 방식을 제어한다. controller는 view와 model이 각각 어떤 역할과 책임이 있는 지 알고 있어야 한다.

1. MVC 모델의 장점

대표적으로 다음과 같은 두 가지 장점이 있다.

■ 기능별로 분리되어 있기 때문에 분업해서 작업을 진행하기 편리하다.
■ 분리되어 있기 때문에 변경 및 수정이 있는 경우, 다른 영역에 까지 영향이 미치지 않는다.

2. MVC 패턴 동작방식 ( content 예시 )

■ VIEW ( content.jsp )


👉 JSP에서 해당 링크로 넘기면서 M ( 매개변수를 ) 컨트롤러에 넘겨준다.

■ Controller ( Controller.java ) servlet


👉 Controller에서 if 조건문을 통해 content 메서드가 실행된다.

👉 Service클래스에서 getInstance();메서드를 실행하라!
👉 Service클래스에서 contentS(seq)를 실행하고 dto 객체에 담아준다.

■ MODEL ( Service(비즈니스로직) / DTO / DAO / SQL )


👉 Service 클래스에서 instance 객체에 담아주고 instance를 반환한다.

SingleTon Object Model 이란 ?

싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.
애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴.
생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다.

👉 DAO 클래스에서 content(seq)를 실행해라 !

👉 DAO 클래스에서 데이터 추출을 rs로 해준다음, dto객체에 값을 담아준다. 그리고 void타입이 아니기때문에 dto를 반드시 반환해줘야한다.

🍯TIP

String view = "content.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);

👉 그 후 Controller 에서 남은 로직(드래그 + 위 src)을 실행해주기위해 Cotroller로 돌아간다.

👉 content.jsp 로 응답을 해준다. Controller에서
그 후 User가 요청한 것을 화면에 나타내준다.

👉 content.jsp 에서 dto.getContent(); 값을 뽑아내어 화면에 뿌려준다.

여기까지가 내가 생각한 MVC 패턴이다. 기능 구현만 하면되는 del / insert / update_ok는 간단하다. 처음해보는거라 상당히 어렵지만 화이팅!

"Festina Lente"

profile
ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ 🔥

5개의 댓글

comment-user-thumbnail
2021년 1월 2일

대단해요 bb

1개의 답글
comment-user-thumbnail
2021년 1월 2일

보고 공부 많이합니다 감사합니다!

1개의 답글
comment-user-thumbnail
2022년 1월 12일

감사합니다 출처를 밝히고 제 블로그에서 해당 자료를 가져가서 써도 될까요?

답글 달기