티스토리 뷰

 

웹 서버(Web Server)란?

-클라이언트로부터  HTTP 요청을 받고, 정적인 웹 콘텐츠를 제공하는 것으로, 주로 HTML파일을 처리합니다. 
즉, 클라이언트로 부터 요청을 받아들여 해당 결과만 응답 해주는 역할로 정적인 페이지 처리를 담당 합니다.
대표적인 예시로는 아파치(Apache)가 있습니다.

 

웹 애플리케이션 서버(WAS)

-동적인 페이지 처리를 담당하며, 요청한 페이지의 로직을 수행하거나 필요할 시 데이터베이스와의 연동을 처리합니다.

WAS내부에 웹서버와 웹컨테이너가 결합된 형태로 웹서버가 정적 페이지 처리, 웹컨테이너가 추가적인 동적 페이지 처리를 담당합니다. 대표적인 예시로는 톰캣(Tomcat)이 있습니다.

 

보시다 싶이, 위의 사진에서 WAS 내부에 Web Server와 Web Container가 존재하여 정적인 페이지 처리는 Web Server만으로 담당하고, 동적인 페이지 처리는 추가적으로 Web Container에서 담당하여 처리를 합니다. 
즉, 해당 요청이 정적인 페이지 처리라면, Web Server에서 더이상 진행되지않고 바로 반환하여 정적인 페이지를 응답하며,
해당요청이 동적인 페이지 처리라면, Web Server에서 Web Container로 거쳐가 해당 요청에 맞는 로직 및 데이터처리를 하여 응답합니다.

 

 

 

WAS안에 Web Server가 있는이유

-Web Container는 DB 조회, 다양한 로직을 처리하는게 주 목적입니다. 하지만 정적요청까지 Web Container에게 전달하게 되면  과부하가 발생하며, 성능이 하락하는 현상이 발생합니다. 
따라서, WAS 안에 Web Server를 포함 시켜 정적인 페이지처리는 Web Server가 처리하게 함으로써 서버 부하를 줄일 수 있습니다.

 

 

Web Container의 내부구조

Servlet이란?

-서블릿(Servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램입니다. 이는 Java 코드 안에 HTML 태그가 삽입되는 형태로 자바 언어로 되어있습니다. 이는 클라이언트의 요청을 처리하고 그에 대한 응답을 생성합니다.

 

JSP(Java Server Pages)란?

-JSP는 HTML 코드 안에 Java 코드를 삽입하여 동적으로 웹 페이지를 생성할 수 있게 해주는 기술입니다. 
즉, HTML 파일안에 Java 코드가 삽입되어 있는 구조로,  JSP를 실행하면 실행 시점에 각각의 키워드에 매핑이 되어 잇는 코드로 변환 후에 실행되는 형태입니다.

 

 

Servlet과 JSP의 차이

  Servlet JSP
문법 Java 코드 내부에 HTML 코드 삽입 HTML 코드에 Java 코드 삽입
예시 out.println("<HTML>"); <% for(int i=0; i<10; i++) { %>
특징 Controller 역할에 적합 View 역할에 적합

 

 

스프링 서버 동작원리

내장 톰캣 서버는 스프링 부트에 내장되어있는 WAS의 한 종류입니다. dispatch servlet은 중앙집중식으로 들어오는 모든 요청을 받습니다. 이를 통해 클라이언트로부터 들어오는 모든 HTTP 요청을 받아 처리하고 해당 요청에 맞는 컨트롤러를 스프링 컨테이너안에 있는 적절한 컨트롤러에게 요청을 전달해 응답을 생성합니다

 

  1. 요청 전송
    -클라이언트로 부터 http 요청이 들어옵니다.

  2. 컨트롤러 검색
    -DispatcherServlet이 요청을 받은후 요청 URL과 매칭되는 컨트롤러를 검색합니다.

  3. 컨트롤러 실행
    -컨트롤러 검색을 한후 해당 컨트롤러를 찾았으면  해당 컨트롤러를 실행합니다.

  4. View 검색
    -컨트롤러 실행 후 결과값은 View인데, 해당 View가 있는지 ViewResolver를 통해 검색합니다.

  5. View 생성
    -해당 View가 존재할 시 바로 해당 View를 생성한 후 응답을 합니다.

 

 

웹서버 예시

 

WAS 예시

 

Dispatch Servlet예시

'자바 > 스프링' 카테고리의 다른 글

빈(Bean) 등록 심화  (0) 2023.06.26
컴포넌트 스캔  (0) 2023.06.26
스프링 Controller, Repositroy, Service  (0) 2023.05.30
빈(Bean)등록 (컴포넌트,빈)  (0) 2023.05.30
DI(의존성 주입)이란?  (0) 2023.05.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함