Web Architecture

yimo22·2023년 4월 2일
0

WEB

목록 보기
4/8

WEB Application Architecture

  • JSP를 이용하여 구성할 수 있는 WEB Application Architecture 는 크게 2가지로 나뉜다.
    1. Model 1
    2. Model 2
  • JSP가 Client의 요청에 대한 logic 처리와 view 처리를 모두 하느냐(model1), 아니면 view에 대한 처리만 하는가(model2) 가 가장 큰 차이점이다.
  • Model2 구조는 MVC (Model-View-Controller) pattern 을 web 개발에 도입한 구조를 뜻한다.

Model 1

구조

  • model1은 view와 logic을 JSP 페이지 하나에서 처리하는 구조를 뜻한다.
  • Client 로부터 요청이 들어오면 JSP페이지는 java beans나 별도의 service class를 이용하여 작업을 처리한다.
    • 그 결과를 Client에 출력한다.

장단점

  • 장점
    • 구조가 단순
    • 개발기간이 짧다 (개발비용감소)
  • 단점
    • 출력을 위한 view코드와 로직처리를 위한 java코드가 섞여있어 복잡하다
    • JSP코드에 BE와 FE가 혼재되어 분업이 어렵다
    • 규모가 커지면 유지보수가 어렵다
    • 확장성(신기술 도입, framework의 이용)이 어렵다.

Model 2

구조

  • Model2는 모든 처리를 JSP페이지에서 하는 것이 아니라, Client의 요청에 대한 처리는 Servlet이, logic 처리는 java class가 담당하여 분업화 한 것을 말한다.
  • model2 구조는 MVC pattern을 웹 개발에 도입한 구조이며 완전히 같은 형태를 보인다.

장단점

  • 장점
    • 복잡하지 않다.
    • 분업이 용이해졌다.
      • 그결과 유지보수가 쉬워지고,
      • 확장성이 증가했다.
  • 단점
    • 초기 구조파악이 복잡하다
    • 개발 시간의 증가로 개발 비용이 증가한다.

Front Controller

FrontController 개요

FrontController의 등장

뷰 렌더링과 컨트롤러 역할을 분리하여 설계하는 것은 장점이 되었지만, 해당 페이지가 늘어나면서 각 컨트롤러 내 중복 코드가 다량으로 발생하게 되는 문제가 발생한다.

  • View로 이동하는 Forward 코드가 중복

→ 공통 처리가 어려운 것을 해결하기 위해서 Front Controller 패턴을 도입했다.

FrontController 흐름

  1. Client의 요청이 FrontController 에 들어온다. (URL)
  2. FrontController는 매핑정보를 조회
  3. 해당 컨트롤러에게 처리를 요청한다.
  4. 해당 컨트롤러로부터 결과를 출력할 view의 이름을 리턴한다.
  5. 컨트롤러에서 보내온 view이름을 토대로 view를 검색 (ViewResolver)
  6. 처리결과를 View에 송신
  7. 처리결과가 포함된 View를 FrontController에 송신
  8. Client에게 Response 반환

FrontController 특징

  • 서블릿 하나로 클라이언트의 요청을 받음
    • 공통 코드 처리가 가능해진다. ⭐
  • Front Controller가 요청에 맞는 컨트롤러를 찾아서 호출한다.
  • Front Controller를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.
    • FrontController는 공통 코드를 처리하고 요청에 맞는 컨트롤러를 매핑해주는 역할을 수행하게 된다.
    • 대표적인 예시로, Spring Web MVC의 Dispatcher Servlet이 있다.
profile
Viva La Vida!

0개의 댓글