Model 1

  • JSP 파일에서 MVC의 모든 동작을 처리하는 방식
  • 장점
    • 개발 속도가 빠름
  • 단점
    • 유지보수가 힘듦
      • 높은 복잡도
        • 디자인 코드와 자바 코드의 경계가 불명확함
          • 하나의 파일에서 view 코드와 자바 코드가 관리되기에, 자바 코드를 수정할 때도 디자이너와 별도 협업이 필요할 수 있음
        • Business logic의 재사용성 낮음

 

Model 2

  • JSP와 서블릿을 함께 사용하여 MVC 패턴을 구현하는 방식
    • Model(Service): DB 관련 처리. 보통 .java로 만들어짐
    • View: 화면 처리. 보통 .jsp로 만들어짐
    • Controller: Model과 View를 연결. Servlet으로 구현함
    • 요청이 들어오면 Controller가 Model로 갈지 View로 갈지 판단 및 실행
    • 장점
      • 유지보수에 용이함
        • 디자인코드와 비즈니스 코드 분리 가능
        • 비즈니스 코드 재사용 가능
        • 확장성 좋음
    • 단점
      • 초리 설계에 많은 시간 소요

그렇다면, Model 2 방식과 비교했을 때 Spring을 사용하는 이유는? Spring Boot의 이유는?

  • 추후 서술

 

 

출처

Servlet : Servlet용어정리, model1과 model2(MVC구조) 개발방식 비교

JSP - JSP란?(Servlet과의 비교 model1, model2)

[면접준비] MVC Model1, Model2

'Spring' 카테고리의 다른 글

JAVA Servlet / JSP이란?  (0) 2021.08.02

JSP / Servlet 등장 배경

이를 해결하기 위해 CGI(Common Gatgeway Interface)라는 방식이 제안됨

하지만 CGI는 user request에 따른 실행 단위가 process여서, 많은 수의 요청이 들어오면 서버에 걸리는 부하가 컸음. 이러한 문제를 해결하기 위한 대안으로 Server-side Web framework가 등장. 그 중 하나가 바로 JAVA EE.

JSP(JavaServer Page)와 Servlet은 Web Framework인 JAVA EE에서 제공하는 client/server side 기술

Servlet

→ client의 request에 적절한 response를 효과적으로 제공하기 위한 자바 기술

  • .servlet → client의 request를 받고 적절한 response를 생성하는 java 객체
  • request에 response하는 java class를 구현하기 위한 표준인 JAVA EE Servlet API를 준수하는 java class를 JAVA EE에 처리하거나 저장함
  • servlet을 배포하거나 실행하기 위해선, 반드시 web container가 사용되어야 함
  • 서블릿 패키지 - javax.servlet
    • javax.servlet에 포함된 Servlet API가 Web Container와 Servlet의 상호작용을 정의함
    • javax.servlet.http 패키지
      • Web server와 clients 간의 여러 request 및 response를 추적하는 세션관리 objects를 포함한, generic servlet emelments의 HTTP별 subclasses를 정의하는 패키지

Web(Servlet) Container

  • servlet과 상효작용하는 web server컴포넌트
  • 역할
    • servlets의 라이프사이클 관리
    • 특정 서블릿과 url을 매핑
    • url requester 접근권한 검증
    • 서블릿 인스턴스 생성
    • loads and unloads servlets
    • request-response objects 생성 및 관리
    • security, concurrency, lifecycle management, transaction, deployment and etc...등을 포함한 추가적인 web components를 위한 런타임 환경을 지정함
  • Sevlet Container 예시
    • Jetty
    • Apache Tomcat
      • Tomcat 6이상부터는 general app container로도 사용 가능
      • 이전 버젼은 오직 web container로만 사용 가능
  • 서블릿은 JSP Compiler에 의해 JSP에서 자동적으로 생성될 수도 있음
    • jsp는 Web Container(JSP Compiler)에 의해 서블릿으로 다시 변환됨
      • .jsp → .java(Servlet) → .class로 변환
        • 위 변환은 오직 한번만 수행됨
        • 같은 페이지에 수 많은 요청이 있더라도 처리 속도는 거의 유지
          • JSP 페이지 요청이 들어오면, 서블릿 객체가 메모리에 존재하는지 우선 확인 → 있으면 serving / 없으면 서블릿 변환 후 메모리 올리고 serving
    • 자세한 내용은 이 링크 참고

Servlets과 JSP의 차이

  • Servlet
    • JAVA안에 HTML이 삽입됨
  • JSP
    • Servlet의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술
      • 서블릿으로 view를 구현하기 위해선 너무 많은 코드가 필요함
      • 서블릿을 작성하지 않고도 간편하게 view 구현을 할 수 있게 한 것이 JSP
    • dynamic page를 생성하기 위한 기술. HTML안에 JAVA가 삽입됨

Life Cycle of a Servlet

  • 서블릿 생명주기의 핵심 3가지 메서드 1. init() / 2. service() / 3. destory()
    • 위 세가지 메서드는 모든 서블릿에서 구현되며, 서버에 의해 특정 시점에 호출됨
  • 자세한 내용은 추후 서술

출처

Jakarta Servlet - Wikipedia

Web container - Wikipedia

 

Web container - Wikipedia

A web container (also known as a servlet container;[1] and compare "webcontainer"[2]) is the component of a web server that interacts with Jakarta Servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particula

en.wikipedia.org

[JSP] 서블릿(Servlet)이란?

'Spring' 카테고리의 다른 글

JSP & Servlet 개발방식 - Model 1 & Model 2  (0) 2021.08.02

+ Recent posts