FireDrago
[Servlet] 서블릿이란 본문
1. 서블릿이란?
- 서버에서 실행되는 작은 프로그램
- 웹 어플리케이션 서버 (WAS)가 있어야 실행된다.
- 클라이언트의 요청에 따라 특정 기능을 실행하고, 결과값을 반환한다.
- 자바 클래스 형태로 구현된다.
- TCP/IP 연결, 소켓연결, HTTP 요청 파싱 후 읽기, 비지니스 로직 실행, HTTP 응답메시지 작성, TCP/IP 연결해제 소켓해제 등의 일련의 과정에서 개발자는 비지니스 로직만 서블릿으로 등록하면 자동으로 WAS가 다른 과정을 수행
- 멀티스레드 지원

2. 서블릿 실행 순서
- 클라이언트로 부터 HTTP 요청이 올때마다 HttpRequest, HttpResponse 객체를 생서하고 서블릿에 전달한다
(request, response 객체는 요청마다 만들어지는 반면, 서블릿은 싱글턴으로 관리된다.) - 서블릿 (helloServlet) 이 실행되고 HttpResponse 객체를 생성한다.
- 이를 바탕으로 HTTP 응답 메시지를 생성하고 클라이언트에게 전달한다.
3. 서블릿 계층구조
- 서블릿은 자바로 만들어 졌기때문에 클래스 간의 계층구조를 가질 수 있다.
- tomcat 내부의 Servlet , ServletConfig 인터페이스를 구현하는 GenericServlet 클래스가 있고,
HttpServlet 클래스는 GenericServlet 클래스를 상속받는다. - 서블릿을 사용자가 만들기 위해서는 HttpServlet 클래스를 상속받고
init ( ) : 클래스가 처음 메모리에 로드될때 최초 한번만 실행
doGet( ) : get 방식의 요청이 올때마다 실행 (주요 기능)
doPost( ) : post 방식의 요청이 올때마다 실행 (주요기능 )
destroy ( ) : 서블릿이 종료될때 시행
등의 메서드를 오버라이딩 하여 구현한다.

4. 서블릿 매핑하기
- 서블릿은 클래스를 생성하고, 맵핑을 해야 작동한다.
맵핑의 방식은 2가지가 있다.
4.1 web.xml 이용
<servlet>
<servlet-name>aaa</servlet-name> <!- 서블릿 이름지정-->
<servlet-class>sec01.ex01.FirstServlet</servlet-class> <!- 서블릿 경로지정-->
</servlet>
<servlet>
<servlet-name>bbb</servlet-name>
<servlet-class>sec01.ex01.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name> <!- 서블릿 이름선택-->
<url-pattern>/first</url-pattern> <!- 서블릿을 실행할 url 명령어-->
</servlet-mapping>
<servlet-mapping>
<servlet-name>bbb</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>
4.2 애너테이션 이용
- web.xml 을 편집하는것은 번거롭다. 이에따라 서블릿 클래스 파일 내부에서 @ 를 사용하여 맵핑 할 수 도 있다.
@WebServlet("/third") // /third 명령어를 사용하면 이 servlet을 호출한다.
public class ThirdServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("ThirdServlet init 메서드 호출");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ThirdServlet doGet 메서드 호출");
}
@Override
public void destroy() {
System.out.println("ThirdServlet destroy 메서드 호출");
}
}
5. 멀티스레드 지원
- 싱글턴으로 관리되는 서블릿을 누가 불러올까? 그 역할을 하는 것이 '스레드'이다.
- 서블릿 컨테이너는 '스레드 풀' 이라는 곳에 스레드를 미리 만들어 놓는다.
- 여러 사용자가 접속하면 스레드는 각자 하나의 요청을 담당하여 서블릿을 실행하고 응답한다.
- 멀티 스레드를 지원하기 때문에 개발자는 스레드를 직접 관리할 필요가 없어 편리하다.

'프로그래밍 > Servlet' 카테고리의 다른 글
| [Servlet] MVC 패턴 업그레이드 하기 (0) | 2024.01.25 |
|---|---|
| [Servlet] MVC 패턴의 출현 (0) | 2024.01.24 |
| [Servlet] Servlet 사용법 (Request, Response) (0) | 2024.01.22 |
| [Servlet] 세션(Session) (0) | 2023.07.07 |
| [Servlet] 포워드, 바인딩 (0) | 2023.07.04 |
