JSP(MVC)

[JSP] 중요!!!! MVC 구조가 필요한 이유와 기능 + DAO, DTO, VO 구분

원코딩 2022. 7. 26. 23:36

 

 

 

 

 

jsp를 배우면서 정말 머리 아팠던건

자바와 다양한 웹 언어들이

뒤죽박죽 섞여서

보기에도 작성하기에도

매우 불편하다는 거다.

 

 

 

 

오늘 다루려고 하는 MVC 구조는

바로 이와 같은 문제를 해결해준다. 

 

 

 


 

 

 

 

 

MVC  사용 목적


1. MVC 구조는 효율적인 업무를 위해 사용한다. 

JSP는 자바 소스 코딩 없이 태그형 프로그램만 제어하도록 하는 것을 목적으로 한다.

JSP는 화면 출력을 위함이기 때문에 퍼블리셔와 프로트앤드의 작업공간인 반면

자바 코딩은 백엔드의 주 영역이다. 

 

만약 JSP 문서에 자바 코딩을 함께 사용한다면 퍼블리셔는 본인의 영역 이상의 공부가 필요하다.

반대로 자바 소스 안에 CSS와 같은 웹 언어가 섞여있다면 백앤드 본인 영역 이상의 공부가 필요하다. 

 

이처럼 하나의 문서에 여러 언어가 섞여있다면,

한 사람이 많은 언어를 다룰 수 있어야 하므로 역할 분담이 되어 있지 않은 비효율적인 업무를 야기한다.

효율적인 업무를 위해 각자의 작업 공간을 나누는 MVC 구조가 필요한 것이다. 

 

 

2. MVC 구조는 정보 유출을 방지하기 위해 사용한다. 

MVC구조가 필요한 다른 이유는 '보안'이다. 

만약 중간 역할인 Controller를 거치지 않고 바로 JSP 파일이 출력된다면 

회사 내부의 모든 데이터가 외부에 노출되어 버린다. 

 

 

그렇다면 도대체 MVC 구조란 무엇인가?

 

 

 

 

MVC


MVC는 Model + View + Controller 를 뜻한다. 

역할에 따른 공간을 나누고 필요한 정보를 주고 받고 하면서 소통하는데, 

사용자의 요청 값인 request와 서버에 저장되어있는 session만을 이용하여 데이터를 전송한다. 

 

M V C
model view controller

 

Model(모델)

사용자가 이용하는 데이터를 가지고 있으며 비지니스 로직을 가지고 있다.

DataBase 에서 어떻게 데이터를 가져올 것이며, 어디에 저장할 것인지 결정한다. 

백앤드가 주로 작업하는 공간으로 Java로 코딩한다. 

 

1. Controller로 부터 request를 받는다. 

2. 요청값을 받는다 : request.getParameter()

3. 결과 값을 담는다 : request.setAttribute()

 

 

Model은 DAO , DTO , VO 클래스에 접근한다. 

* DAO는 DataBase에 접근하여 조회,삭제,삽입 하는 SQL문장을 사용한다. 

* DTO는 순수한 데이터 객체만 가진 클래스로 getter와 setter만 가지고 있다. 데이터가 담기는 그릇이다. 

* VO는 기능은 DTO와 비슷하며 오직 getter만 사용하기 때문에 읽기만 가능하다. Read-Only

 

 

model 부분은  java 언어를 사용한다.

 

 

 

View(뷰)

사용자 인터페이스 중심으로 화면에 출력되는 공간이다. (JSP파일)

시각적인 UI요소를 사용하므로 퍼블리셔와 프론트앤드가 주로 작업한다. 

HTTP, CSS, JavaScript 와 같은 웹 언어를 사용한다. 

 

1. Controller에게 request 값을 받는다

2. 화면을 출력한다. 

 

view는 사용자에게 보이는 부분으로 웹 언어를 사용한다.

 

 

 

 

 

Controller(컨트롤러)

모델과 뷰 사이에서 서로를 중계하는 리모컨과 같은 역할을 수행한다. 

사용자의 요청을 파악하여 그에 맞는 결과를 리턴한다. 

결과값은 Model로 부터 받으며 받은 결과 값을 JSP(VIEW)로 전송한다.

 

1. 사용자의 요청 값에 따라

2. Model을 찾는다. 

3. Model에게 받은 request 값을 받는다. 

3. 받은 request값에 따라 View를 찾는다. 

 

 

 

 

 

 


 

 

 

 

MVC 구조를 이해할 수 있었던건 

언어를 구분했다는 점이다. 

 

JSP 안에서 자바 코딩과

HTML/CSS 웹 언어모두 사용이 가능했지만

언어를 구분하는 과정이 필요했다. 

 

MVC 구조를 적용하면

각자의 공간에서 

각자의 언어만 사용할 수 있어

각자의 역할을 수행한다.