■ MVC 모델
MVC (Model/View/Controller) 모델은 중앙 데이터 구조를 갖는다.
시스템을 세 개의 서브시스템으로 나누어 구성한다. 제어 서브시스템은 뷰 서브시스템과 모델 서브시스템 사이에서 가교 역할을 한다.
MVC 모델은 같은 모델의 서브시스템에 대하여 여러 뷰 서브시스템을 필요로 하는 상호작용 시스템에 적합하다. 이렇게 시스템을 세 개의 서브시스템으로 분리하는 이유는 사용자 인터페이스에 해당하는 뷰 서브시스템과 데이터와 데이터 처리 로직에 해당되는 모델 서브시스템을 독립적으로 분리함으로써 변경에 대한 영향을 덜 미치도록 하려는 것이다. 즉 사용자 인터페이스 부분이 자주 변경되더라도 모델 서브시스템에는 영향을 주지 않기 위해서이다.
MVC 모델의 특징 각각의 서브시스템이 독립적이라는 것이다. 따라서 뷰는 모델의 데이터를 직접 변경할 수 없고, 오직 모델이 제공하는 데이터를 가져올 수만 있다. 그러나 모델은 뷰에 대한 정보를 알 수 없다. 따라서 모델은 여러 개의 뷰가 어떻게 처리되는지도 알 필요 없다.
□ 모델(Model) 서브시스템
모델 서브시스템은 뷰/제어 서브시스템과 독립되어 모든 데이터 상태와 로직을 처리한다. 따라서 특정 입, 출력 방식에 영향을 받지 않는다. 오로지 무언가의 호출에 응답만 할 뿐이다. MVC 모델의 웹 애플리케이션에서는 컨트롤러가 모델을 호출하는 역할을 맡고 있다. 이렇게 모델 서브시스템을 독립적으로 존재하게 함으로써 소프트웨어를 좀 더 유연하게 만들 수 있다.
□ 뷰(View) 서브시스템
뷰 서브시스템은 웹 애플리케이션의 사용자와 직접 대화가 이루어지는 부분으로 모델 서브시스템이 제공한 데이터를 사용자에게 보여주는 역할을 한다. 즉 모델로부터 얻은 데이터를 표현하는 방법을 제공하고 다양한 뷰를 통해 표시하는데, 뷰마다 컨트롤러 서브시스템이 각각 하나씩 연결된다.
□ 제어(Controller) 서브시스템
제어 서브시스템은 뷰와 모델 사이에서 전달자 역할을 한다고 볼 수 있다. 즉 뷰를 통한 사용자의 요청을 적절한 모델 쪽으로 넘겨주고, 모델로부터 받은 응답을 다시 뷰를 통해 사용자에게 돌려준다. 따라서 뷰나 모델 서브시스템 입장에서는 제어 서브시스템만 알면 된다.
시스템을 재사용할 가능서잉 적거나, 뷰와 제어의 기능을 함께 묶어도 뷰의 코드가 복잡하지 않으면 구조를 단순하게 하려고 제어 서브시스템의 로직을 제거하여 뷰에서 그 기능을 담당하도록 하는 경우도 있다(MVC document view 패턴). 그러나 제어 부분이 뷰에 포함되더라도 코드를 유연하게 만들려면 뷰와 몸델 간의 강한 결합을 피하고 뷰 내부에서도 제어 로직을 별도로 처리하는 것이 바람직하다.
MVC 모델의 장점은 관심의 분리이다. 즉 데이터를 화면에 표현(뷰)하는 디자인과 로직(모델)을 분리함으로써 느슨한 결합이 가능하다. 따라서 동일한 데이터로 서로 다른 형태의 디자인을 추가할 수 있고, 결합이 느슨해서 서로 영향을 덜 미치기 때문에 구조 변경 요청 시 수정하기가 쉽다. 그러나 기본 기능 설계로 인한 클래스 수의 증가로 복잡도가 증가할 수 있고, 속도가 중요한 프로젝트에는 적합하지 않을 수 있다.
출처 : 네이버 지식백과
https://terms.naver.com/entry.naver?docId=3532956&cid=58528&categoryId=58528
아키텍처 모델
지금까지 아키텍처 스타일이 무엇인지 알아보았다. 이제 주요 아키텍처 모델 몇 가지를 살펴보자. 아키텍처 모델은 다양한 기준으로 분류할 수 있지만 기능 분할과 배치 및 제어 관계에 따라 [
terms.naver.com
■ MVC 구현 - board 데이터를 바탕으로
□ DAO, DTO 데이터
우선 기존에 사용했던 BoardDAO, BoardDTO 파일과 거의 동일한 파일 사용.
<BoardDTO.java>
MVC와는 무관하지만 시간 표시를 단순화하기 위해 simpleDate 변수를 추가.
<BoardDAO.java>
□ 컨트롤러 생성(서블릿 파일)
<BoardController.java>
.do 로 끝나는 가상의 주소에 대한 처리를 담당한다.
<Command.java - 인터페이스>
컨트롤러에서 받은 요청을 분석해서, 어떤 처리가 필요한지에 따라 각 처리에 필요한 Command 객체를 할당한 후 로직을 처리하게 하고, 필요한 데이터를 가지고 컨트롤러로 보내준다.
□ Command 관련 파일들 (cpm.mvc.board 패키지)
<WriterCheckCommand.java>
<ListCommand.java>
<ContentCommand.java>
<ModifyCheckCommand.java>
<DeleteCommand.java>
□ View 페이지 관련 jsp 파일들
<index.jsp>
<message.jsp>
<writeForm.jsp>
<boardList.jsp>
<contentView.jsp>
<modifyForm.jsp>
'IT&코딩 > JSP' 카테고리의 다른 글
JSP - 12일차 (파일 업로드) (0) | 2022.12.07 |
---|---|
JSP - 10일차 (EL & JSTL) (0) | 2022.11.30 |
JSP - 9일차 (JDBC2) (0) | 2022.11.30 |
JSP - 8일차 (JDBC) (0) | 2022.11.28 |
JSP - 7일차 (데이터베이스) (0) | 2022.11.25 |