[스프링부트- blogV1] 8. 톰캣의 메모리 저장과 통신

silver's avatar
Dec 30, 2024
[스프링부트- blogV1]  8. 톰캣의 메모리 저장과 통신
Contents
톰캣
 

톰캣

톰캣(Tomcat)은 웹 애플리케이션 서버(WAS)로, 웹 애플리케이션의 요청을 처리하고 세션을 관리한다.
notion image
  1. Application (애플리케이션) : 사용자의 요청을 처리하고, 데이터를 제공하며, 사용자 인터페이스를 생성하는 프로그램이다. 일반적으로 HTML, CSS, JavaScript, JSP, 서블릿 등의 파일로 되며 이러한 파일은 클라이언트(브라우저)와 서버(톰캣) 간의 상호작용을 처리한다.
  1. Session (세션) : 세션은 특정 사용자와 웹 애플리케이션 간의 상호작용을 유지하기 위해 서버에서 생성하는 일시적인 저장 공간이다. 사용자가 웹사이트에 로그인하거나 데이터를 입력하는 동안 상태를 유지하기 위해 사용되며 사용자의 로그인 정보, 장바구니 내용 등이 세션에 저장된다. * 세션은 일정 시간 동안 사용되지 않으면 자동으로 종료되며 이것을 통해 메모리를 효율적으로 관리한다.
  1. Request (요청) : 클라이언트가 서버에 보내는 요청으로 사용자가 웹 페이지를 열거나 버튼을 클릭할 때, 브라우저가 서버에 HTTP 요청을 보낸다. 이러한 요청에는 요청 메서드(예: GET, POST), 요청 URL, 헤더, 쿼리 파라미터 등이 포함된다. 서버는 이 요청을 받아 처리하고 적절한 응답을 클라이언트에 반환한다.
 
1. HTTP 요청 수신 Tomcat은 네트워크를 통해 들어온 HTTP 요청을 소켓을 통해 읽는다. 이 요청은 Raw HTTP 데이터로 구성되며, 헤더와 바디가 포함된다.
POST /api/data HTTP/1.1 Host: example.com Content-Type: application/json Content-Length: 34 { "name": "John", "age": 30 }
2. 요청 데이터 파싱 Tomcat은 요청 데이터를 파싱하여 다음과 같은 주요 요소로 나눈다:
  1. HTTP 메서드: POST
  1. 요청 URL: /api/data
  1. HTTP 버전: HTTP/1.1
  1. 헤더:
      • Content-Type: application/json
      • Content-Length: 34
  1. 바디: json
{ "name": "John", "age": 30 }
3. HttpServletRequest 객체 생성 Tomcat은 HTTP 요청 데이터를 HttpServletRequest 객체에 매핑한다. 주요 데이터가 HttpServletRequest의 속성에 저장된다:
1. 요청 라인
  • HTTP 메서드 → request.getMethod() -> "POST"
  • URI → request.getRequestURI() -> "/api/data"
2. 헤더
  • 헤더 정보는 HttpServletRequest 객체의 내부 HashMap에 저장된다.
  • 예:
    • Content-Type → request.getHeader("Content-Type") → "application/json"
    • Content-Length → request.getHeader("Content-Length") → "34"
3. 요청 바디 Tomcat은 요청 바디를 스트림으로 저장한다. 이 데이터는 필요할 때 HttpServletRequest의 메서드를 통해 읽을 수 있습니다:
  • InputStream: request.getInputStream()
  • Reader: request.getReader()
 
 
Share article

silver