레이어는 원래 아키텍처 패턴 중 하나이며, 서로 인접한 레이어끼리만 단방향 액세스를 할 수 있습니다. 일반적인 레이어는 다음 3개 층으로 나누고 각각 다른 역할을 부여합니다.
프레젠테이션 층 : 사용자 인터페이스(UI)와 컨트롤러를 제공합니다. 이 층에는 클래스 이름에 Controller나 Action이 붙은 클래스가 배치됩니다.
비즈니스 로직 층 : 비즈니스 로직을 제공합니다. 이 층에는 이름 끝에 Service가 붙은 유스 케이스를 제어하는 클래스나 회사Company나 종업원Employee, 주문Order 등 업무 대상의 이름이 붙은 클래스가 배치됩니다.
데이터 액세스 층 : 데이터베이스 액세스를 추상화합니다. 이 층에는 클래스 이름 끝에 DAO Data Access Object가 붙은 클래스가 배치됩니다.
프레젠테이션 층의 역할
프레젠테이션 층의 주된 역할은 사용자 인터페이스와 컨트롤러를 제공하는 것입니다.
사용자 인터페이스란 사용자가 직접 조작하는 화면이나 장표를 말합니다. 최근에는 IoT의 발전으로 단말도 존재하지만, 이 책에서 사용자 인터페이스라고 했을 때는 화면 인터페이스를 가리키는 것으로 합니다.
컨트롤러는 사용자 인터페이스를 통해 사용자의 입력을 받아 적절한 비즈니스 로직을 호출하고, 그 결과를 사용자 인터페이스로 반환하는 작업을 합니다. 컨트롤러의 또 한 가지 중요한 작업은 웹 애플리케이션의 상태(세션)를 저장해 이용하는 데이터를 관리하는 것입니다. 컨트롤러는 일반적으로 MVC2라고 불리는 JSP 모델의 컨트롤러로 알려져 있습니다.
프레젠테이션 층은 사용자의 요청에 따라 패턴이 늘어 다양하게 발전했습니다. 그렇게 되자, 아키텍처 면에서 입력 데이터 구문 검증은 JSP Servlet으로 만들어진 웹 애플리케이션 중간 층에서 실행되지만, Ajax를 사용한 웹 애플리케이션일 경우 일부는 클라이언트 층에서 실행될 때도 있습니다.