본문으로 바로가기

[Servlet] Servlet(서블릿)이란? | 서블릿의 특징

category Java/Apache Tomcat 2022. 3. 13. 19:44
반응형

 

 

 

서블릿을 설명하기 앞서 서블릿이 왜 탄생하게 되었는지에 대해 알아보고자 한다.

 

 

클라이언트가 form과 같은 데이터를 전송 버튼을 누름으로써 

서버에 요청을 했다고 하자.

 

 

이때 서버에서 처리해야 하는 업무는 아래 순서와 같다.

 

 


 

• 서버 TCP/IP 연결 대기, 소켓 연결

• HTTP 요청 메시지를 파싱해서 읽기

• POST 방식, /save URL 인지

• Content-Type 확인

• HTTP 메시지 바디 내용 피싱

   ex) username, age 데이터를 사용할 수 있게 파싱

• 저장 프로세스 실행

• 비즈니스 로직 실행

   - 데이터베이스에 저장 요청

• HTTP 응답 메시지 생성 시작

• HTTP 시작 라인 생성

• Header 생성

• 메시지 바디에 HTML 생성에서 입력

• TCP/IP에 응답 전달, 소켓 종료

 


 

 

너무 많은 처리 내용이 있다.

하지만 서블릿은 비즈니스 로직 실행 만을 제외한 모든 업무를 처리해준다.

즉, 개발자는 비즈니스 로직 실행인 애플리케이션만 개발하면 된다.

 

 

 

 

 


● 서블릿의 특징

 

 

 

서블릿은 아래와 같은 구조로 이루어져 있다.

 

 

• urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행

• HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest

• HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse

• 개발자는 HTTP 스펙을 매우 편리하게 사용

 

 

 

 

 

간단한 예시를 통해 흐름을 읽혀보자.

 

 

 

웹 브라우저에서 localhost:8080/hello 로 요청을 보내면 

WAS는 요청 메시지를 기반으로 request(요청), response(응답) 객체를 생성한다.

이를 가지고 서블릿 컨테이너에서 애플리케이션 로직을 수행하고

이 결과를 response 객체에 담아 웹 브라우저에게 응답을 한다.

 

 

 

 

 

간단히 정리하면

 

HTTP 요청시

  - WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출

  - 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용

  - 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력

  - WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성

 

 

 

 

 


● 서블릿 컨테이너

 

 

 

 

톰캣처럼 서블릿을 지원하는 WAS서블릿 컨테이너라고 한다.

 

서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.

 

서블릿 객체는 싱글톤으로 관리가 되는데,

그 이유는 고객의 요청이 올 때마다 계속 객체를 생성하는 것은 비효율적이기 때문이다.

최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다.

모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.

 

 

 

 

 

반응형