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 |