오늘날 우리 모두는 창조의 필요성을 알고 있습니다. 동적 웹페이지 즉, 시간에 따라 사이트 콘텐츠를 변경할 수 있거나 클라이언트로부터 받은 요청에 따라 콘텐츠를 생성할 수 있는 것입니다. Java로 코딩하는 것을 좋아한다면 Java를 사용하여 동적 웹 페이지를 생성하는 방법도 있다는 사실을 알게 되어 기쁠 것입니다. 자바 서블릿 . 하지만 주제를 진행하기 전에 먼저 서버 측 확장의 필요성을 이해해 보겠습니다.
자바 서블릿이란 무엇입니까?
Java 서블릿은 Java 지원 웹 서버 또는 애플리케이션 서버에서 실행되는 Java 프로그램입니다. 이는 웹 서버에서 얻은 요청을 처리하고, 요청을 처리하고, 응답을 생성한 다음, 응답을 웹 서버로 다시 보내는 데 사용됩니다.
Java 서블릿의 속성
서블릿의 속성은 다음과 같습니다.
- 서블릿은 서버 측에서 작동합니다.
- 서블릿은 웹 서버에서 얻은 복잡한 요청을 처리할 수 있습니다.
Java 서블릿 아키텍처
서블릿 아키텍처는 다음과 같이 이미지 자체에서 설명할 수 있습니다.

레카 나이
Java 서블릿 실행
기본적으로 Servlet 실행 6가지 기본 단계가 포함됩니다.
- 클라이언트는 웹 서버에 요청을 보냅니다.
- 웹 서버가 요청을 받습니다.
- 웹 서버는 요청을 해당 서블릿에 전달합니다.
- 서블릿은 요청을 처리하고 출력 형식으로 응답을 생성합니다.
- 서블릿은 응답을 웹 서버로 다시 보냅니다.
- 웹 서버는 응답을 클라이언트에 다시 보내고 클라이언트 브라우저는 이를 화면에 표시합니다.
이제 서버 측 확장이 필요한 이유에 대해 논의해 보겠습니다.
서버측 확장의 필요성
그만큼 서버측 확장 동적 웹 페이지를 만드는 데 사용되는 기술에 지나지 않습니다. 실제로 동적 웹 페이지 기능을 제공하려면 웹 페이지에 컨테이너나 웹 서버가 필요합니다. 이 요구 사항을 충족하기 위해 독립 웹 서버 공급자는 다음과 같은 형태로 몇 가지 독점 솔루션을 제공합니다. API( 응용 프로그래밍 인터페이스).
이것들 아피스 웹 서버와 함께 실행할 수 있는 프로그램을 만들 수 있게 해주세요. 이 경우, 자바 서블릿 또한 의 구성요소 API 중 하나입니다. Java Platform Enterprise Edition(현재는 'Jakarta EE'로 알려짐) 이는 Java로 동적 웹 애플리케이션을 생성하기 위한 표준을 설정합니다.
무언가에 대해 배우기 전에 그 무언가의 필요성을 아는 것이 중요합니다. 이것이 동적 웹 페이지를 만드는 데 사용할 수 있는 유일한 기술은 아닙니다. Servlet 기술은 다음과 같은 다른 웹 서버 확장과 유사합니다. 공통 게이트웨이 인터페이스( CGI) 스크립트 및 하이퍼텍스트 전처리기 (PHP). 그러나 Java Servlet은 다음의 한계를 해결하므로 더 수용 가능합니다. CGI 낮은 성능과 낮은 수준의 확장성과 같은 것입니다.
CGI(Common Gateway Interface)란 무엇입니까?
CGI 실제로 다음과 같은 프로그래밍 언어를 사용하여 작성된 외부 응용 프로그램입니다. 씨 또는 C++ 클라이언트 요청을 처리하고 동적 콘텐츠를 생성하는 역할을 담당합니다.
CGI 응용 프로그램에서 클라이언트가 동적 웹 페이지에 액세스하도록 요청하면 웹 서버는 다음 작업을 수행합니다.
- 먼저 요청한 웹페이지를 찾습니다. 즉 URL을 사용하는 필수 CGI 애플리케이션.
- 그런 다음 클라이언트의 요청을 처리하기 위한 새로운 프로세스를 만듭니다.
- 프로세스 내에서 CGI 애플리케이션을 호출하고 요청 정보를 애플리케이션에 전달합니다.
- CGI 애플리케이션에서 응답을 수집합니다.
- 프로세스를 삭제하고 HTTP 응답을 준비하여 클라이언트에 보냅니다.

자바에 포함된 문자열
그래서, CGI 서버는 모든 요청에 대해 프로세스를 생성하고 삭제해야 합니다. 이 접근 방식은 소수의 클라이언트를 처리하는 데 적용 가능하지만 클라이언트 수가 증가하면 서버의 작업 부하가 증가하여 요청을 처리하는 데 걸리는 시간이 증가한다는 것을 이해하기 쉽습니다.
Java 서블릿과 CGI의 차이점
| 서블릿 | CGI(공통 게이트웨이 인터페이스) |
|---|---|
| 서블릿은 이식 가능하고 효율적입니다. | CGI는 이식성이 없습니다. |
| 서블릿에서는 데이터 공유가 가능합니다. | CGI에서는 데이터 공유가 불가능합니다. |
| 서블릿은 웹서버와 직접 통신할 수 있습니다. | CGI는 웹서버와 직접 통신할 수 없습니다. |
| 서블릿은 CGI보다 저렴합니다. | CGI는 서블릿보다 비쌉니다. |
| 서블릿은 쿠키를 처리할 수 있습니다. | CGI는 쿠키를 처리할 수 없습니다. |
서블릿 API
서블릿은 두 가지 패키지로 구성됩니다.
- javax.servlet(기본)
- javax.servlet.http(고급)
이러한 패키지에 존재하는 다양한 클래스와 인터페이스는 다음과 같습니다.
| 요소 | 유형 | 패키지 |
|---|---|---|
| 서블릿 | 상호 작용 | javax.servlet.* |
| 서블릿요청 | 상호 작용 | javax.servlet.* |
| 서블릿응답 | 상호 작용 | javax.servlet.* |
| 일반서블릿 | 수업 | javax.servlet.* |
| Http서블릿 | 수업 | javax.servlet.http.* |
| HttpServlet요청 | 상호 작용 | javax.servlet.http.* |
| HttpServlet응답 | 상호 작용 | javax.servlet.http.* |
| 필터 | 상호 작용 | javax.servlet.* |
| 서블릿 구성 | 상호 작용 | javax.servlet.* |
Java 서블릿의 장점
- 서블릿은 더 빠르게 수신된 모든 새 요청에 대해 새 프로세스를 생성하지 않기 때문에 CGI보다 좋습니다.
- Java로 작성된 서블릿은 플랫폼 독립적입니다.
- 생성에 따른 오버헤드를 제거합니다. 새로운 프로세스 서블릿은 별도의 프로세스에서 실행되지 않으므로 각 요청에 대해. 모든 요청을 동시에 처리하는 인스턴스는 하나만 있습니다. 이는 또한 메모리를 절약하고 서블릿이 클라이언트 상태를 쉽게 관리할 수 있게 해줍니다.
- 서버 측 구성요소이므로 서블릿은 보안 웹서버에서 제공합니다.
- 그만큼 API Java용으로 설계된 서블릿은 플랫폼 독립성과 이식성 등 Java 플랫폼의 장점을 자동으로 획득합니다. 또한 다음과 같은 Java 플랫폼에서 생성된 광범위한 API를 사용할 수 있습니다. JDBC 데이터베이스에 액세스합니다.
- 개인 용도나 트래픽이 적은 웹사이트에 적합한 많은 웹 서버가 무료 또는 매우 저렴한 가격으로 제공됩니다. 저렴한 비용 예. 자바 서블릿. 그러나 무료인 Apache를 제외하고 대부분의 상용급 웹 서버는 가격이 상당히 비쌉니다.
서블릿 컨테이너
서블릿 컨테이너 , 또한 ~으로 알려진 서블릿 엔진, Java Servlet 구성 요소에 대한 런타임 환경을 제공하는 통합 개체 집합입니다. 간단히 말해서 웹 클라이언트 요청을 처리하기 위해 웹 서버 상단에서 Java Servlet 구성 요소를 관리하는 시스템입니다.
서블릿 컨테이너가 제공하는 서비스:
- 네트워크 서비스: 서블릿 클래스를 로드합니다. 로딩은 로컬 파일 시스템, 원격 파일 시스템 또는 기타 네트워크 서비스에서 이루어질 수 있습니다. 서블릿 컨테이너는 요청과 응답이 전송되는 네트워크 서비스를 제공합니다.
- MIME 기반 메시지 디코딩 및 인코딩: MIME 기반 메시지를 디코딩하고 인코딩하는 서비스를 제공합니다.
- 서블릿 컨테이너 관리: 서블릿의 라이프사이클을 관리합니다.
- 자원 관리 HTML 파일, 서블릿, JSP 페이지 등의 정적 및 동적 리소스를 관리합니다.
- 보안 서비스: 리소스 액세스 권한 부여 및 인증을 처리합니다.
- 세션 관리: 추가하여 세션을 유지합니다. 세션 ID URL 경로에.
결론
자바 서블릿 비즈니스 로직을 정의하고 복잡한 웹 요청을 처리하는 데 중요한 구성 요소입니다. 이러한 구성 요소는 웹 사이트의 동적 개발을 촉진하고 애플리케이션 역학을 변경할 수 있는 많은 잠재력을 가지고 있습니다. 이 기사에서 배울 주요 기능 중 일부는 다음과 같습니다.
- Java Servlet은 서버 측 애플리케이션 개발을 지원하고 동적 컨텐츠를 처리하여 강력하고 대화형 웹 사이트를 구축하는 방법을 제공합니다.
- 요청이 웹 서버에 도달하자마자 서블릿 인스턴스는 다음을 사용하여 초기화됩니다. 열() 메소드이며 유형에 따른 HTTP 요청은 doGet() 또는 doPost() 메소드로 처리될 수 있습니다.
- 서블릿은 요청이 수신될 때마다 프로세스를 생성하거나 삭제하지 않으므로 웹 애플리케이션의 반응성과 효율성을 향상시킵니다.
Java 서블릿에 대한 FAQ
Q1. Java Servlet의 라이프사이클은 무엇입니까?
Java Servlet에는 초기화(메모리 할당)부터 시작하여 객체가 삭제(메모리 할당 해제)될 때까지 미리 정의된 수명 주기가 있습니다. 다음 단계로 진행됩니다.
- init() – 웹 서버가 요청을 수신하고 새 서블릿 인스턴스가 초기화되자마자 호출됩니다.
- service() – 클라이언트 요청을 처리하고 해당 요청을 적절한 doGet() 또는 doPost()로 리디렉션합니다.
- destroy() – 요청이 처리될 때 호출되고 응답이 클라이언트로 다시 전송되며 마지막으로 서블릿에 할당된 메모리가 할당 해제됩니다.
Q2. Java 서블릿을 구성하는 방법은 무엇입니까?
Java Servlet의 구성은 배포 설명자 파일 - web.xml. 하지만 오늘날 대부분의 서블릿 기반 애플리케이션은 @WebServlet Annotation을 사용하여 Java 서블릿을 구성하기 위해 Annotation 기반 구성을 사용했기 때문에 이제는 레거시입니다.
스프링 프레임워크의 mvc예 : @WebServlet(이름 = MyServlet, urlPatterns = /myServlet)
Q3. 서블릿 필터란 무엇입니까?
서블릿 필터는 로깅, 모니터링, 디버깅 및 문제 해결과 같은 웹 요청에 대한 사전 사후 처리 작업을 수행하기 위한 추가 구성 요소입니다.