데이터를 받은 서버에서 처리해야 하는 업무가 무엇일까?
웹 애플리케이션 서버 직접 구현한다면 우리는 무엇을 만들어 주어야 하는가?
우리가 어떠한 형태의 데이터를 전송 받았다. 예를 들어 이렇게 생겼다고 생각해보자
그렇다면 우리는 받은 데이터를 이제 알맞게 조작을 해서 전달을 해주어야 한다. 그럼 알맞게 조작을 할때 서버가 해야 할일은 아래와 같다.
왼쪽의 사진은 서버에서 받은 데이터를 가공하는 과정이다 초록색으로 칠한 부분인 비즈니스 로직을 제외한 나머지 작업이 너무 많았다. 이는 굉장히 비효율적이다 때문에 우리는 비즈니스 로직만을 다루고자 나머지 과정을 지원해주는 서블릿이라는 것이 나타났다.
서블릿
▶ 서블릿 코드 사용법
서블릿을 사용하기 위해 코드를 작성하는 방법은 매우 간단하다.
- 해당 클래스에 서블릿을 어노테이션을 통해 선언하고 이름을 지정해준다
- urlPatterns(/hello)의 URL이 호출된다면 서블릿 코드가 실행되는 코드이다.
- HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
- HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
- 개발자는 HTTP 스펙을 매우 편리하게 사용한다
▶전체적인 구조
그렇다면 HTTP 요청 시 전체적인 구조를 말로 설명해서 알아보자
- 사용자는 localhost:8080 에 hello 라는 요청을 보냈다.
- 요청 메세지를 기반으로 Request 와 Response 객체를 생성한다
- 두개의 객체를 기반으로 helloServlet 을 실행해준다
- 서블릿이 종료되면 Response 에 정보를 담아서 다시 전송한다.
▶ 서블릿 컨테이너
- 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너 라고 한다
- 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
- 서블릿 객체는 싱글톤으로 관리한다
- 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 매우 비효율적이다
- 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다
- 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다
- 공유 변수 사용을 주의해야 한다
- 서블릿 컨테이너 종료시에 함께 종료된다
- JSP도 서블릿으로 변환 되어 사용된다
- 동시 요청을 위한 멀티 쓰레드 처리를 지원한다. 덕분에 개발자가 멀티 쓰레드에 크게 신경을 쓰지 않아도 되는것처럼 보이게 서블릿이 해결해 주는 것이다.
https://latewalk.tistory.com/123
🎁 멀티 쓰레드(feat. Servlet)
서블릿을 호출하는건 도데체 누구? 기본적인 요청과 응답의 과정이다. 그림에 보이는 연결이 되고 서블릿을 호출하는 과정에서 도데체 누가 Servlet 을 호출하는것일까? 그것이 바로 쓰레드라는
latewalk.tistory.com
'Spring > 🌲 Spring' 카테고리의 다른 글
🌲 RestController 와 Controller 의 차이 (0) | 2023.08.03 |
---|---|
🌲 Request 와 Response (0) | 2023.08.03 |
🌲 개발자가 서비스를 주고 받을 때 고민하는 3가지(feat. SSR, CSR) (0) | 2023.08.01 |
🌲 멀티 쓰레드(feat. Servlet) (0) | 2023.08.01 |
🌲 웹서버 와 웹 애플리케이션 서버(WAS) (0) | 2023.08.01 |