Servlet & Servlet Container

|

Servlet이란?

- WebProgramming에서 Client의 요청을 처리(request)

- 그 결과를 다시 Client에게 전송하는 자바 프로그래밍 기술(response)

- Servlet 클래스의 구현 규칙을 따름

- javax.servlet package에 정의된 인터페이스

- 서블릿의 라이프 사이클을 위한 세가지 필수 메소드 정의

  - init : 초기화 (최초의 요청인 경우만 실행; 1회 실행)

  - service: 초기화 이후 각각의 요청들이 들어오면 호출 (계속 실행)

  - destroy : 서블릿 객체가 파괴되어야 할 때 호출

 

Servlet의 특징

- Java Thread를 이용해 동작

- HTML 변경 시 재컴파일 필요

- Java 코드에 HTML이 들어가있음

- HTML을 사용해서 요청에 응답

 

Servlet 생성방법

- @WebServlet
    해당 서블릿과 매핑될 url 지정
- HttpServlet 클래스 상속

 

Servlet 동작방식

- 사용자(클라이언트)가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송
- HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성
- web.xml은 사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청을 한 것인지 찾음
- 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 POST, GET여부에 따라 doGet() 또는 doPost()를 호출
- doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냄
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸

 

Servlet Container 란?

- 서블릿들의 LifeCycle(생성, 실행, 소멸) 을 담당 (서블릿 관리)

- 요청이 들어올때 마다 자바 스레드를 만듬(Multi Thread 지원)

- 대표적으로 무료 서비스가 바로 Tomcat

- Tomcat은 웹서버와 소켓을 만들어 통신하며 JSP와 Servlet이 작동할 수 있는 환경을 제공

 

* GenericServlet

- GenericServlet은 Servlet 인터페이스를 상속하여 클라이언트-서버 환경에서 서버단의 애플리케이션으로서 필요한 기능을 구현한 추상클래스

- service() 메서드를 제외한 모든 메서드를 재정의하여 적절한 기능으로 구현

- GenericServlet 클래스를 상속하면 애플리케이션의 프로토콜에 따라 메서드 재정의 구문을 적용해야 함.

 

* HttpServlet

- 일반적으로 서블릿이라하면 거의 대부분 HttpServlet을 상속받은 서블릿을 의미

- HttpServlet은 GenericServlet을 상속받았으며, GenericServlet의 유일한 추상 메서드인 service를 HTTP 프로토콜 요청 메서드에 적합하게 재구현해놓음.

- 이미 DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE를 처리하는 메소드가 모두 정의되어 있음

'Java' 카테고리의 다른 글

int 형 숫자의 자릿수 구하는 방법  (0) 2023.10.18
jar, war 파일 관련  (0) 2023.08.01
HttpSession  (0) 2023.04.04
Server 1대에 Multi version 의 JDK 사용  (0) 2022.12.06
DAO, DTO, VO  (0) 2022.03.21
And