Server

클라이언트와 웹 서버, 웹 어플리케이션의 동작 과정

BeomJun.Kwon 2024. 1. 6. 17:53

 

클라이언트와 웹 서버, 웹 어플리케이션의 동작 과정

 


 

웹 서버

  • 웹 서버는 서블릿을 관리하는 역할
  • 웹 어플리케이션에서 작성된 서블릿을 웹 서버가 인스턴스화 하여 관리
  • 웹 어플리케이션은 서블릿 컨테이너에 의해 실행되며, 서블릿 컨테이너는 웹 어플리케이션 내의 서블릿 컴포넌트를 관리하고 실행. 클라이언트 요청이 발생하면 웹 서버에서 백엔드에서 작성된 서블릿 인스턴스를 조회하여 해당 서블릿을 확인하고 로직 수행
    ( 서블릿 컨테이너는 HTTP 요청을 받고, 해당 요청을 적절한 서블릿에 전달하여 처리. 서블릿은 이 요청을 처리하고 응답을 생성하는 역할을 수행 )

 


 

JSP 기준 웹서버와 백엔드 동작 순서

  1. 클라이언트가 요청 :
    • 클라이언트(웹 브라우저)가 특정 URL로 요청을 보냄
    • 웹 어플리케이션의 사용자 인터페이스와 상호작용을 시작

  2. 웹 서버에서 서블릿 매핑 확인 :
    • 웹 서버(예: Apache Tomcat)에서 URL에 매핑된 백엔드 서블릿 인스턴스를 확인
    • 웹 서버는 URL을 기반으로 적절한 서블릿을 찾아 요청을 처리

  3. 백엔드에서 작성한 서블릿 로직 수행 :
    • 매핑된 서블릿(예: ProductServlet) 인스턴스는 요청에 대한 메소드(doGet(), doPost 등) 내부의 비즈니스 로직을 수행
    • 백엔드 로직이 실행되어 요청에 대한 처리를 담당합니다.

  4. JSP 페이지 지정 및 데이터 전달 :
    • 서블릿은 로직 처리 결과를 담은 데이터와 함께 응답을 위한 JSP 페이지를 지정. 데이터는 HttpServletRequest 객체를 통해 JSP 페이지로 전달
    • 처리 결과를 사용자에게 보여주기 위한 뷰를 준비

  5. 웹 서버에서 해당 JSP를 서블릿으로 변환 :
    • 웹 서버 내부의 JSP 엔진은 지정된 JSP 페이지를 서블릿으로 변환
    • 웹 서버는 JSP 파일을 서블릿으로 변환하여 HTML 생성 로직을 수행할 수 있게 함

  6. 변환된 JSP 서블릿에서 HTML 생성 :
    • 변환된 JSP 서블릿은 HttpServletRequest 객체에서 받은 데이터를 사용하여 HTML 컨텐츠를 생성
    • 변환된 JSP 서블릿은 전달받은 데이터를 기반으로 HTML 컨텐츠를 생성

  7. 생성된 HTML을 브라우저에 전달 : 
    • 생성된 HTML 컨텐츠는 클라이언트(브라우저)에게 응답으로 전송
    • 최종적으로 생성된 HTML 페이지가 클라이언트에게 전달되어 사용자가 결과를 볼 수 있음

 


 

스프링 MVC 및 타임리프 기준 웹서버와 백엔드 동작 순서

  1. 클라이언트 요청 시작 :
    • 사용자의 웹 브라우저가 특정 URL로 HTTP 요청을 보냄
    • 이는 웹 애플리케이션 사용자 인터페이스와의 상호작용을 시작하는 단계

  2. 스프링 MVC에서의 요청 처리 :
    • 웹 서버(예: Apache Tomcat)는 스프링 MVC 프레임워크로 요청을 전달
    • 스프링 MVC는 요청 URL과 매핑된 컨트롤러를 찾음

  3. 컨트롤러 로직 수행 :
    • 매핑된 컨트롤러의 메소드는 요청에 대한 비즈니스 로직을 수행
    • 이 과정에서 데이터베이스 조회, 데이터 처리 등이 이루어짐

  4. 뷰 이름과 모델 데이터 전달 :
    • 컨트롤러는 처리된 결과 데이터와 함께 뷰 이름을 반환
    • 이 데이터는 주로 ModelAndView 객체를 통해 전달되며, 타임리프 템플릿으로 지정된 뷰 이름을 포함
    • @RestController를 사용하면 타임리프 템플릿 엔진을 사용하여 HTML 뷰를 생성하는 데 적합하지 않음

  5. 타임리프 템플릿 렌더링 :
    • 스프링은 지정된 타임리프 템플릿 뷰를 찾아서 템플릿 엔진에 전달
    • 타임리프 템플릿 엔진은 모델 데이터를 사용하여 HTML 컨텐츠를 동적으로 생성

  6. HTML 응답 생성 및 전송 :
    • 생성된 HTML 컨텐츠는 웹 서버를 통해 클라이언트(브라우저)에게 응답으로 전송
    • 클라이언트는 최종적으로 생성된 HTML 페이지를 받아 사용자에게 표시