티스토리 뷰
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 |
- 20200804
- 20200420
- 20200317
- 20200502
- 20200512
- 20200429
- 20200428
- 20200425
- 백준
- 20200510
- chapter8
- 20200503
- chapter7
- 20200421
- 20200624
- 20200413
- 20201204
- 20200423
- 생활코딩리눅스
- 20200415
- 20200427
- likelion
- 20200403
- 20200330
- 20200622
- 20200417
- 20200504
- 20200319
- 20200406
- 20200424
- Total
- Today
- Yesterday