스프링을 공부한지 1달이 다되가는 시점에서 이제서야
웹 아키텍처가 조금씩 이해가 되기 시작하는 것 같다.
MVC 란?
Model , View , Controller 의 합성어로 소프트웨어 디자인 패턴이다.
각 M,V,C 에 대해 설명해보자면
- Model : 백그라운드에서 동작하는 로직을 처리하며, 어플리케이션이 '무엇'을 할지 정의한다. 내부 비즈니스 로직 처리 역할
- View : 사용자가 보게 될 결과 화면을 출력하고, 화면에 무엇을 보여주는 역할을 한다. 컨트롤러 하위에 종속되어,모델이 모델/컨트롤러가 보여주고자 하는것을 보여줄 것임
- Controller : 사용자의 입력처리와 흐름 제어를 담당하며, 모델이 어떻게 처리할지 알려주는 역할, 화면의 로직 처리 부분이다.
MVC패턴에는 모델1방식과 모델2방식이 있는데 JSP 웹사이트 구조는 크게 모델1 방식과 모델2 방식으로 나뉜다.
간단하게 설명하자면 JSP에서 출력과 로직을 전부 컨트롤 하는지 여부와(모델1)
JSP에서 출력만 처리하는지 여부(모델2)로 분류할 수 있다.
Model1 아키텍처
많이 사용되는 아키텍쳐중 하나인 Model 1 에 대해서 스터디한 내용을 간단하게 정리한다.
웹 애플리케이션을 컨트롤하는 Container를 살펴보았다. model 1의 경우에는
JSP 가 컨트롤과 뷰어의 역할을 수행한다.
1. Conroller
여기서 컨트롤러는 JSP에 작성된 자바코드를 나타내는 것이고
Model 과 연동하여 그 결과값을 VIEW 에 띄워주는 역할을 수행하고 있다.
이번에 게시판을 만들며 실제로 작성했던 login_proc.jsp 와 insert_proc.jsp 파일이 이에 해당한다.
login_proc.jsp
insert_proc.jsp
두 control 파일을 확인해 보면. 사용자의 입력정보를 추출하고
이를 Model 과 연동하려 입력정보를 전달해주는 역할을 하고 있다.
1번 view 에서 입력되는 정보들을 request로 받은 다음에 이를
2번에서 Model 로 전달하고 있다.
참고로 DAO 는 Data Access Object 의 약자로 DB의 데이터에 접근을 위한 객체이다.
DB 에 접근하기 위한 로직과 비즈니스 로직을 분리하기위해 사용한다.
DAO에 대한 설명은 아래 링크 참고
https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/
2. View
그리고 view 는 Controller 가 Model을 이용해 검색한 데이터를 유저가 원하는 화면으로 제공하는
역할을 한다. 이를 위해 HTML / CSS 의 마크업 언어를 사용한다.
실제로 작성해본 코드인 login.jsp, BoardList.jsp 가 view 의 역할을 한다
login.jsp
BoardList.jsp
실제로 두 jsp 파일은 마크업 언어를 사용하여 웹 상에 유저들이 원하는
페이지를 띄어주는 역할을 한다.
view 파일 중 하나인 login.jsp 를 실행하면 아래 이미지와 같은 웹 페이지가 나타난다.
여기서 입력받은 정보를 위의 login_proc.jsp 의 controller 가 전달받아서 model 로 전송하는 것이다.
3. Model
Model 은 db 연동에 사용되는 자바 객체들이다. DB 의 연동 로직을 제공하면서, DB 에서 검색한 데이터가
저장되는 장소이다.
이때 DAO에 대한 개념을 알아야 하는데, 위에 Controller 부분의 DAO 부분의 설명 링크 참고하면 된다.
즉, DAO는 DB에 일어나는 수만은 유저들의 커넥션을 효율적으로 컨트롤하고 이로인한 오버헤드를
제어하기 위해 만들어진 DB에 접속하는 전용 객체이다. DAO 에서 모든 커넥션을 컨트롤 하여
DB에 일어나는 커넥션을 효율적으로 컨트롤하는 역할을한다.
MODEL1 에서의 Model 이 DAO 자바 파일을 포함하고 있으므로, Model 이 위 역할을 맡는다고
보면 좋을 것 같다.
실제로도 DAO 클래스 중 하나인 USERDAO 클래스를 보면 DB에 연결하는
로직이 존재하는 것을 알 수 있다.
## JDBCUtil 클래스
위 클래스는 DB 의 커넥션을 맡고 있는 클래스여서, DAO 클래스를 만들때 들어가는 함수이다.
아래 링크 참고
Model 1 아키텍처는 작성하기 매우 간단하다는 측면에서는 장점이 있으나,
JSP 파일에 자바코드, 마크업 코드가 혼재하여 각 코드마다 역할이 불분명하다.
또, JSP 파일에 여러 코드들이 혼재해 있기 때문에 유지보수가 어렵다는 단점도 명확히 존재한다.
참고 링크
https://coding-factory.tistory.com/69
'Back End > Spring' 카테고리의 다른 글
[Spring] mybatis 와 spring 연동 및 작동 방법에 대하여 (0) | 2020.08.08 |
---|---|
[Annotation] annotation 종류 정리 (0) | 2020.08.07 |
[JAVA SPRING] : EL 과 JSTL (0) | 2020.06.16 |
[JSP] page 디렉티브 <%@ page %> (0) | 2020.06.08 |
[Spring] open the java build path property page of project 에러 (0) | 2020.06.05 |