이전의 이야기에서 고대 개발자들이 웹 서비스를 만드는 도구, JSP-Servlet을 사용함을 알았습니다. 그렇다면 어떤 마법진(패턴)을 사용해서 웹이라는 마법을 구현하는지 알아보도록 하겠습니다. 마법진의 이름은 MVC!
mvc 패턴은 WAS안에서 3가지 역할로 나눠서 구성하는 디자인 패턴입니다.
M (Model): DB연산에 대한 로직과 실행을 담당.
V (View) : 사용자 화면 출력을 담당.
C (Controller) : 중간에서 Model과 View를 제어함.
그렇다면 작동 순서대로 세부 설명을 해보도록하죠.
사용자의 모든 요청은 Controller로 모입니다. 브라우저에서 어떤 url 요청을 하든 말이죠.
🙋 왜 Controller로 가는데요?
🤖 작업 분배기니까.
Controller는 톰캣 서버에서 구동되는 가장 핵심적인 역할이기 때문에 HttpServlet 클래스를 상속받은 서블릿이 됩니다. 그러면 이 서블릿은 이제 톰캣 서버와 정보를 주고 받을수 있는 기능이 있고, 이 정보 안에는 사용자의 요청 내용과 커넥션 정보를 내장 객체 형체로 가지고 있어 이를 처리하는 기능을 가지고 있습니다.
실제 로직을 수행하는 역할을 하는 자바 클래스입니다. Command는 로직을 수행하는 기능을 가진 클래스를 의미하고 DAO/DTO는 DB와 연동되어 데이터 작업을 담당하는 기능의 클래스입니다. 둘을 나눠둔 것도 역시 기능별로 모듈화를 하는 객체지향적 방식을 지향하기 때문입니다. DAO는 데이터 작업 로직을 가진 클래스이고 DTO는 데이터를 저장해 운반하기 위한 클래스입니다. 일반적인 자바 프로그래밍과 동일한 구조입니다.
최종 작업 결과물을 가지고 적절한 화면을 구성해서 사용자에게 전달하는 기능을 말합니다. 화면 구성은 JSP가 편리하기 때문에 대부분 JSP를 사용해 뷰를 구성합니다. 톰캣서버는 컨트롤러가 최종적으로 실행시킨 JSP 파일을 서블릿으로 변환해서 컴파일한 뒤 실행해줍니다. 결과적으로 사용자에게 도달하는 데이터는 html 형태의 코드가 됩니다. 브라우저는 이 코드를 받아 화면 구성을 해 사용자에게 보여줍니다.