티스토리 뷰

Goal

 - MVC 패턴의 정의와 동작방법을 이해한다.

 - MVC 패턴의 2가지 Model을 이해한다.

 - 게시판을 만들기 위한 전체적인 컨포넌트의 구조를 이해한다.

 - 게시판 실습에 사용될 테이블을 생성한다.

 

 

1. MVC 패턴의 이해

 

 - MVC : Model, View, Controller를 뜻하는 용어로 개발 형태의 일종.

 - Model : 데이터베이스와의 관계를 담당. 클라이언트의 요청에서 필요한 자료를 DB에서 추출하거나 수정하여 Controller로 전달함. 

 - View : 사용자에게 보여지는 UI 화면. 주로 .jsp파일로 작성하며, Controller에서 어떤 View 컴포넌트를 보여줄지 결정함. 

 - Controller : 클라이언트의 요청을 받고, 적절한 Model에 지시를 내리며, Model에서 전달된 데이터를 적절한 View에 전달함.

 -MVC패턴을 통해 작업을 분할하면, 추후 유지보수에 용이함.

 

1-1 MVC패턴 구동 절차

클라이언트가 웹서버에 요청 -> 컨트롤러가 요청을 받고 판단함. (어떤 DB가 필요한지, 어떤 작업이 필요한지 등 ex) 회원 정보인가, 장바구니 정보인가, 구매내역의 정보인가 등) 직접 작업을 수행하지 않고 정하기만 함 이후 여러가지 Model중 요청에 부합하는 Model에 작업을 지시함 -> 해당 Model은 DB에 접근 -> DB는 값을 Model 반환, 값은 받은 Model은 컨트롤러에게 작업을 완수했다는 응답을 보냄 -> 응답을 받은 컨트롤러는 사용자에게 Model로부터 받은 응답을 보내주기 위해 여러개의 뷰 중에서, 응답에 부합하는 적절한 뷰를 찾아 보내준다 -> 해당 뷰는 클라이언트화면에 값을 출력해줌 

 

View는 주로 JSP파일을 이용해서 만듬 : JSP는 HTML안에서 사용하기 때문에, 화면을 구성하기 쉽다. 따라서 사용자에게 보여지는 화면을 구성하는 View단에서 JSP를 많이 쓴다..

 

Model쪽에서는 주로 Servlet(JAVA)파일로 자주 만듬 : 화면상에 보여줄 필요 없이 웹어플리케이션 서버에서 로직만 수행하면 되기 때문에. 해당 수행이 용이한 JAVA 파일로 자주 만듬.

 

2. MVC패턴의 2가지 기법

 - MVC패턴에는 2가지 기법이 존재함

 

2-1 Model1

 - View와 Controller가 같이 있는 형태(한 파일에 같이 있음)

 - 프로젝트의 규모가 작고, 빠르게 시스템을 만들어야 할 때 사용

 - 요즘에는 많이 안쓰임, View와 Controller가 같이있으면 작업속도는 빠르지만, 유지보수가 어려움(소스 파악이 어려렵기 때문에).

 

클라이언트의 요청이 들어오면, controller의 로직이 수행되고 DAO에 로직을 수행하라는 명령 전달 -> DAO는 DB에 접근하고 DB는 다시 값을 DAO에 반환 -> DAO는 그 값을 JSP에 전달

 

2-2 Model2

 

 - MVC에서 Model, View 그리고 Controller가 모두 모듈화(부품화) 되어 있는 형태

 * 모듈화(부품화) : 강사님 피셜, Java웹 개발에서 가장 중요한 부분. 프로젝트를 각기능별로 부품처럼 만들어 놓는 것. 어떤 프로젝트를 진행할때, 많은 기능들을 하나씩 부품화 시켜 놓으면, 유지보수에 용이함.

 - Model, View, Controller가 나누어져 있는 전통적인 MVC를 따름.

 - 규모가 크고 유지보수에 중요도를 줄 때 사용

 

클라이언트 요청 -> Servlet(Controller)에서 요청을 받음. -> 어떤 커멘드에게 요청 처리를 수행하게 할 것인지 처리한 후 해당 Command에게 요청을보냄. -> Command가 작업처리 -> 처리한 작업 DAO로넘어가고 DAO는 DB와함께 처리해야할 작업을 처리 한후 DB값을 보관 -> 다시 컨트롤러가 값을 받고 로직을 수행한 이후 -> 사용자가 요청한 화면에 결과물을 출력하기 위해 View로 값을 보내고 -> View는 클라이언트에게 응답을 해줌.

 

3. 전체적인 컴포넌트 설계

 - MVC 패턴을 구성하는 컴포넌트들을 살펴본다

 

 

클라이언트의 요청 -> FrontController가 요청을 받음 -> FrontController는 클라이언트의 요청을 확인하여 어떤 명령을 수행해야하는지를 판단 후 적절한 Command에게 로직 실행을 지시함. -> 해당 커맨드는 DAO에 접속을 하여 DB로부터 DTO를 이용하여 DB객체를 DTO클래스 테이터 객체로 받은후 다시 Command에 전달. -> Command는 작업을 끝내고 FrontController로 끝난 작업을 보내고 -> 사용자 화면에 적절한 View를 보여주기 위해 FrontController는 적절한 View단에 응답을 보냄.

 

4. DataBase 생성

 - DataBase를 먼저 생성후 MVC게시판 실습을 진행한다.

 

SQL> create table mvc_board (
  2  bId number(4) primary key, // 고유값
  3  bName varchar2(20), // 작성자
  4  bTitle varchar2(100), // 제목
  5  bContent varchar2(300), // 게시 내용
  6  bDate date default sysdate, // 작성일, default로 sysdata사용
  7  bHit number(4) default 0, // 조회수
  8  bGroup number(4), // 들여쓰기, 답변글에 대한 로직처리
  9  bStep number(4),
 10  bIndent number(4)
 11  );

자동으로 키값에 +1을 추가하기위해 시퀀스 생성.

SQL> create sequence mvc_board_seq;

시퀀스가 생성되었습니다.

SQL> commit

 - 테스트를 위한 Dummy Data 입력.

'JSP > 인프런 JSP' 카테고리의 다른 글

JSTL  (0) 2020.05.04
22. JSTL (JSP standard Tag Library)  (0) 2020.03.02
21. 파일 업로드  (0) 2020.03.01
19. Connection Pool  (0) 2020.02.23
18. DAO와 DTO  (2) 2020.02.23
댓글