MVC2 패턴 ( Model View Controller 2 )
MVC 패턴은 디자인 패턴 중 하나로,
디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다.
MVC 패턴은 Model, View, Controller의 줄임말로써, 사용자와 상호작용하는 S/W를 디자인함에 있어 세가지 요소로 쪼개어 하는 것을 가리킨다.
출처 : https://velog.io/@gillog/a-j5c0h49n
Model
애플리케이션의 정보, 데이터를 나타냅니다. 데이터베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻합니다. 또한 이러한 DATA, 정보들의 가공을 책임지는 컴포넌트를 말합니다.
출처 : https://m.blog.naver.com/jhc9639/220967034588
View
화면, jsp (여기에는 자바 코드가 있으면 안됨 - JSTL 문법)
Controller
화면에서의 요청이 굉장히 많을것인데 (ex. 회원가입,주문,예매,결제 등)
이 요청들을 하나로 전부 묶어서 각 주제에 맞추어 구분시켜 위치시키는 것
하나의 큰 주제별로 묶임 ex) [회원, 가입, 탈퇴, 수정 내역] - 하나의 컨트롤러
DAO도 마찬가지다.
Controller는 JSP로 모을수 없음 , SERVLET으로 모음! (URL주소를 분기시킬 수 있음)
URL-Pattern
1. 디렉토리 패턴 : 디렉토리 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조입니다 .
ex ) http://localhost:8181/cr/Hello ➡ /Hello 서블릿
http://localhost:8181/cr/World ➡ /World 서블릿
2. 확장자 패턴 : 확장자 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조입니다 .
ex ) http://localhost:8181/cr/Hello.do ➡ *. do 서블릿
http://localhost:8181/cr/World.do ➡ *. do 서블릿
.board로 끝나는 것은 다 여기로 모은다
@WebServlet("*.board")
MVC2 구조
- 모델 2 구조는 웹 브라우저의 요청을 하나의 서블릿이 받으며 서블릿은 그 요청을 알맞게 처리한 후,
그 결과를 보여줄 JSP 페이지로 포워딩 합니다
- 이 구조의 특징은 웹 브라우저의 모든 요청을 단일 진입점 , 즉 하나의 서블릿에서 처리한다는 점입니다.
하나의 서블릿이 모든 요청을 받기 때문에 서블릿은 웹 브라우저의 요청을 구분하는 방법이 필요합니다
- MVC 모델 2 구조의 핵심은
모델 ( Model )은 비즈니스와 관련된 로직만 처리하면 되며
사용자에게 보일 화면이나 요청의 흐름 제어에 대해서는 전혀 처리 X
뷰 ( View ) 는 사용자에게 알맞은 화면을 보여주는 역할만 수행할 뿐 ,
비즈니스 로직이나 요청 흐름 제어 등을 처리하지 않습니다.
컨트롤러 ( Controller )는 사용자의 요청에 대해서 알맞은 모델을 사용하고 사용자에게 보여줄 뷰를 선택합니다
- MVC 모델 2 구조를 사용함으로써 코드의 유지보수가 쉬워지며 어플리케이션을 쉽게 확장할 수 있습니다.
MVC2 의 컨트롤러 : 서블릿
모델 2 구조에서 서블릿은 MVC 패턴의 컨트롤러 역할을 합니다. 서블릿은 웹 브라우저의 요청과 웹 어플리케이션의 전체적인 흐름을 제어합니다
- 컨트롤러의 흐름 제어 처리 로직
1. 웹 브라우저가 전송한 HTTP 요청을 받아 요청방식에 맞게 doGet (), doPost 를 호출함
2. 웹 브라우저가 어떤 기능을 요청했는지 분석함
3. 모델을 사용하여 요청한 기능을 수행
4. 모델로부터 전달받은 결과물을 알맞게 가공한 후 , request 나 session 의 setAttribute () 메서드를 이용하여 결과값을 속성에 저장 . 이렇게 저장한 결과값은 뷰인 JSP 에서 사용함
5. 웹 브라우저에 결과를 전송할 JSP 페이지를 선택한 후 , 해당 JSP 로 포워딩 혹은 리다이렉트 함
'JSP' 카테고리의 다른 글
DAO, DTO, VO 란? 간단한 개념 정리 (0) | 2022.12.06 |
---|---|
JSP | 회원가입, 로그인 수업(1) (0) | 2022.12.05 |
JSP | EL, JSTL (0) | 2022.12.03 |
JSP | JSP 태그 (0) | 2022.12.02 |
JSP | Html( Hyper Text Markup Language ) (0) | 2022.11.29 |