https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80
https://java-is-happy-things.tistory.com/23
Servlet이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다.
Servlet은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.
Servlet은 Java 언어로 작성된 서버 측 프로그램입니다.
Servlet은 Java Servlet API의 일부로, 웹 애플리케이션 개발에 사용됩니다.
Servlet은 클라이언트에서 HTTP 요청을 받아들이고, HTTP 응답을 생성합니다.
이를 통해 동적인 웹 페이지를 생성하고, 데이터를 검증하고, 사용자 입력을 처리하며, 데이터베이스와의 상호 작용 등을 수행할 수 있습니다.
Servlet은 javax.servlet.Servlet 인터페이스를 구현하여 작성됩니다.
이 인터페이스는 service() 메서드를 정의하며, service() 메서드는 클라이언트에서 전송된 HTTP 요청을 처리하고, HTTP 응답을 생성합니다.
또한, Java Servlet은 init(), destroy()와 같은 라이프사이클 메서드를 구현할 수 있습니다.
Servlet은 Java EE(Java Enterprise Edition) 환경에서 실행할 수 있으며, 웹 서버와 웹 애플리케이션 서버에서 실행됩니다.
Servlet은 Java 언어로 작성되므로, Java의 강력한 객체지향 기능을 활용하여 유지보수성이 높은 웹 애플리케이션을 개발할 수 있습니다.
Servlet은 웹 애플리케이션에서 많이 사용되며, JSP(JavaServer Pages)와 함께 사용하여 동적인 웹 페이지를 생성하는 데 사용됩니다.
또한, Spring Framework, Struts 등과 같은 웹 프레임워크에서도 Servlet을 활용하여 웹 애플리케이션을 개발하고 있습니다.
1. 클라이언트 요청
2. Servlet Container가 HttpServletRequest, HttpServletResponse 객체 생성
3. Web.xml 또는 어노테이션으로 등록된 URL 매핑을 참조하여 해당 Servlet 선택
4. 해당 Servlet 인스턴스 생성 또는 기존 인스턴스 재사용
5. 선택된 Servlet의 service() 메소드 호출
6. 요청 방식에 따라 doGet() 또는 doPost() 등의 메서드가 호출됨
7. Servlet은 클라이언트 요청을 처리하고, 적절한 HTTP 응답을 생성함
8. Servlet Container가 HttpServletResponse 객체에 응답 전송
9. HttpServletRequest, HttpServletResponse 객체 소멸 (Servlet 인스턴스는 재사용 또는 GC)
Servlet 라이프 사이클과 HTTP Servlet 라이프 사이클은 기본적으로 동일합니다.
HTTP Servlet은 Servlet 인터페이스를 구현한 구체 클래스 중 하나이므로, Servlet 라이프 사이클과 유사한 라이프 사이클을 가지고 있습니다.
Servlet 인터페이스는 HTTP 요청/응답 이외의 프로토콜에서도 사용될 수 있으며, 서블릿 컨테이너는 이러한 다른 프로토콜에서도 Servlet 인터페이스를 사용할 수 있습니다.
이에 반해, HTTP Servlet은 HTTP 프로토콜을 기반으로 하는 서블릿으로, HTTP 요청/응답 처리에 특화되어 있습니다.
HTTP Servlet은 Servlet 라이프 사이클에 더해 HTTP 요청/응답 처리에 대한 고유한 라이프 사이클 단계가 있습니다.
예를 들어, HTTP Servlet은 클라이언트로부터 HTTP 요청을 받은 후, HTTP 응답을 생성하고 전송하는 단계를 추가적으로 가집니다.
이러한 단계는 Servlet Container에 의해 자동으로 수행되며, 개발자는 이를 처리하기 위한 적절한 메서드를 구현하면 됩니다.
Servlet 라이프 사이클은 Servlet 인터페이스를 기반으로 정의되며, 모든 Servlet에서 공통으로 적용됩니다.
HTTP Servlet 라이프 사이클은 HTTP 프로토콜을 기반으로 하는 Servlet에 대한 라이프 사이클을 정의하며, Servlet 라이프 사이클과 HTTP 요청/응답 처리에 대한 추가 단계를 가지고 있습니다.
init(): 서블릿 인스턴스 초기화를 위한 메소드입니다. 서블릿이 처음으로 로드될 때 한 번만 호출됩니다.
service(): HTTP 요청을 처리하기 위한 메소드입니다. 이 메소드는 HTTP 요청 방법(GET, POST, PUT 등)에 따라 적절한 메소드(doGet(), doPost() 등)를 호출합니다.
doGet(), doPost(): HTTP GET 및 POST 요청에 대한 응답을 처리하기 위한 메소드입니다. 서블릿은 doGet() 또는 doPost() 중 하나를 구현해야 합니다.
destroy(): 서블릿 인스턴스가 소멸되기 전에 호출되는 메소드입니다. 이 메소드는 서블릿 인스턴스에서 사용한 자원을 해제하거나, 상태를 저장하는 등의 작업을 수행합니다.
getServletConfig(): 서블릿 설정 정보에 대한 ServletConfig 객체를 반환하는 메소드입니다.
getServletContext(): ServletContext 객체를 반환하는 메소드입니다. 이 객체는 웹 애플리케이션의 컨텍스트 정보를 가지고 있습니다.
getInitParameter(): 서블릿 초기화 파라미터 값을 반환하는 메소드입니다.
getServletInfo(): 서블릿 정보에 대한 문자열을 반환하는 메소드입니다.
HttpServlet은 GenericServlet 클래스를 상속받아 구현되며, HTTP 프로토콜을 사용하는 웹 애플리케이션에서 사용됩니다.
HttpServlet은 클라이언트에서 HTTP 요청을 처리하고 HTTP 응답을 생성하는 데 사용됩니다.
이를 통해 동적인 웹 페이지를 생성하고, 데이터를 검증하고, 사용자 입력을 처리하며, 데이터베이스와의 상호 작용 등을 수행할 수 있습니다.
HttpServlet의 주요 메서드로는 doGet(), doPost(), doPut(), doDelete() 등이 있습니다.
각각의 메서드는 클라이언트에서 HTTP GET, POST, PUT, DELETE 요청을 처리하며, 요청에 대한 응답을 생성합니다.
이러한 메서드는 오버라이딩하여 구현할 수 있으며, 각각의 메서드는 클라이언트에서 전송된 데이터를 추출하고, 처리한 후 응답을 생성하는 역할을 합니다.
HttpServlet은 웹 애플리케이션에서 사용자 인증, 세션 관리, 쿠키 처리 등과 같은 기능을 제공하며, 이를 통해 보안과 사용자 경험을 개선할 수 있습니다.
또한, Spring Framework와 같은 웹 프레임워크에서도 HttpServlet을 활용하여 웹 애플리케이션을 개발하고 있습니다.
HTTP Servlet은 Java Servlet API의 일부이며, HTTP 프로토콜을 사용하는 웹 애플리케이션 개발에 사용됩니다.
Servlet은 일반적으로 웹 애플리케이션에서 사용되는 일반적인 서버 사이드 컴포넌트입니다.
Servlet 인터페이스에는 HTTP와 관련된 메소드가 없지만,
HTTP Servlet은 javax.servlet.http.HttpServlet 클래스를 상속하고, HTTP 프로토콜과 관련된 메소드인 doGet(), doPost(), doPut(), doDelete() 등을 포함합니다.
따라서, HTTP Servlet은 HTTP 요청 및 응답을 처리하는 데 사용됩니다.
예를 들어, 웹 페이지에서 사용자가 로그인을 시도하면, HTTP Servlet은 사용자가 제출한 폼 데이터를 처리하여 로그인 인증을 수행하고, HTTP 응답을 생성하여 사용자에게 보내게 됩니다.
반면에, 일반적인 Servlet은 HTTP Servlet과 마찬가지로 Servlet 인터페이스를 구현하지만, HTTP와 관련된 메소드가 아니라 사용자가 정의한 비즈니스 로직을 수행하기 위한 메소드를 포함합니다.