서블릿(Servlet)이란?
자바 서블릿이란 자바를 이용하여 동적으로 생성하는 서버 프로그램이다.
즉, 클라이언트의 요청(Request)이 오면 그에 대한 응답(Response)을 처리해주는 자바 웹 프로그래밍 기술이다.
서블릿을 사용하지 않으면 직접 HTTP 통신으로 오고가는 문자열을 파싱하는 기능을 구현하여야 한다.
서블릿의 흐름
- 개발자가 java파일을 작성한다.(.java)
- 컴파일시 자바 파일이 서블릿 클래스가 된다. (.class)
- 해당 자바 서블릿 클래스가 서블릿 컨테이너(Tomcat)에 등록된다.
- 클라이언트가 요청을 보낸다. (HTTP Request)
- 요청에 알맞는 서블릿이 실행된다.
- 서블릿 메소드가 실행된다.
- DB 연동 필요시 DB가 연동되어 데이터를 CRUD한다.
- 완성된 응답을 클라이언트에게 반환한다. (HTTP Response)
서블릿 컨테이너란(Servlet Container)?
클라이언트가 URL을 통하여 요청을 보내면 정보를 처리하기 위한 스레드를 만들고, 객체를 생성하고, 직접 서블릿을 Mapping하는 작업을 처리해주는 컨테이너이다.
서블릿 컨테이너의 흐름
- 클라이언트가 URL을 통하여 요청을 보내면 해당 HTTP Request를 Servlet Container로 전송한다.
- Servlet Container가 HttpServletRequest, HTTPServletResponse 두 객체를 생성하고, 클라이언트의 요청에 담긴 정보들을 객체에 담는다.
- 요청 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다.
- 찾은 서블릿에서 Service 메소드를 호출한 후 POST, GET 여부에 따라 doGET(), doPOST()를 호출한다.
- 요청에 대한 응답을 HTTPServlet Response객체에 담아 보낸다.
- 응답이 끝나면 두 객체가 모두 소멸된다.
즉, 서블릿 컨테이너(Tomcat)는 소켓을 생성하여 서블릿과 웹 서버를 연결하여 준다.