서블릿은 일반적으로 언제 파괴됩니까?
서블릿은 Java Servlet의 약어로 작은 서비스 프로그램 또는 서비스 커넥터라고 합니다. Java로 작성된 서버 측 프로그램이며 주요 기능은 탐색 및 프로토콜입니다. 대화형으로 데이터를 생성하고 일반적으로 클라이언트에서 실행하는 데 사용되는 동적 웹 콘텐츠를 생성하며 결과는 사용자 상호 작용을 기반으로 그래픽 위치 지정과 같은 사용자 또는 서비스에 대해 계산됩니다. 서블릿은 언제 파괴되나요?
서버에 더 이상 서블릿 인스턴스가 필요하지 않거나 다시 로드되면 destroy 메소드가 호출되어 서블릿을 파기합니다. 이 메소드를 사용하면 서블릿은 init 메소드에 적용된 모든 리소스를 해제할 수 있습니다. 서블릿 인스턴스가 종료되면 다시 호출할 수 없으며 제거될 때까지만 기다릴 수 있습니다.
그런데 서블릿의 수명주기를 떠올려 보겠습니다.
1. 서블릿 로드 및 인스턴스화
서블릿 컨테이너를 시작할 때 컨테이너는 먼저 제공할 수 있는 서블릿을 기록하는 구성 파일 web.xml을 찾습니다. 서비스. 각 서블릿에는 서블릿 이름이 할당됩니다. 이는 서블릿이 실제로 해당하는 전체 Java 클래스 파일 이름입니다. 서블릿 컨테이너는 자동 로드 옵션을 사용하여 각 서블릿의 인스턴스를 생성합니다. 따라서 모든 Servlet 클래스에는 매개변수가 없는 공용 생성자가 있어야 합니다.
2. 초기화
서블릿 컨테이너는 각 서블릿의 init 메소드를 호출하여 각 인스턴스를 인스턴스화합니다. init 메소드를 실행한 후 서블릿은 "초기화" 상태가 됩니다. 따라서 서블릿이 인스턴스화되면 init 메소드가 호출됩니다. 서블릿은 시작 직후 초기화되는 것이 아니라 요청을 받은 후에 초기화됩니다. web.xml 파일에서
초기화가 실패한 후 init() 메소드가 실행되고 ServletException이 발생합니다. Servlet 객체는 가비지 수집기에 의해 재활용됩니다. 클라이언트가 처음으로 서버에 액세스하면 Servlet 구현 클래스가 로드됩니다. 객체가 생성되고 초기화 메서드가 실행됩니다.
3. 요청 처리
서블릿이 초기화되면 요청에 응답할 준비가 된 상태입니다. 서블릿에 대한 각 요청은 서블릿 요청 객체로 표시됩니다. 클라이언트에 대한 서블릿의 응답은 서블릿 응답 객체로 표현됩니다. 클라이언트에 도착하는 요청에 대해 서버는 요청에 특정한 "요청" 객체와 "응답" 객체를 생성합니다. 요청을 처리하기 위해 다른 메서드를 호출할 수 있는 서비스 메서드를 호출합니다.
서비스 메소드는 서버에 액세스할 때 호출됩니다. 서비스 메소드는 서블릿 객체의 수명 주기 동안 여러 번 호출될 수 있습니다. 웹 서버가 시작되므로 서버에 노출되는 리소스 중 일부가 포함됩니다. 네트워크의 여러 호스트(클라이언트)가 서버의 동일한 리소스에 동시에 액세스하는 경우 서버는 여러 스레드를 열어 서로 다른 요청을 동시에 처리하는 경우 동시 데이터 액세스에 오류가 발생할 수 있습니다. 발생하다.
또한 여러 스레드가 동시에 동일한 변수를 처리하는 경우(예: 동일한 파일에 쓰기), 읽기 및 쓰기 작업이 있는 경우 동기화를 추가할지 여부를 고려해야 합니다. 너무 큰 범위를 추가하면 프로그램을 순수하게 단일 스레드로 만들면 시스템 성능이 크게 약화될 수 있습니다. 여러 스레드가 동일한 개체에 액세스하는 경우에만 안전하면 됩니다.
4. Destroy Servlet
서버에 더 이상 Servlet 인스턴스가 필요하지 않거나 다시 로드되면 destroy 메소드가 호출되며, 이 메소드를 사용하면 Servlet은 init 메소드에 적용된 모든 자원을 해제할 수 있습니다. 서블릿 인스턴스가 종료되면 다시 호출할 수 없으며 제거될 때까지만 기다릴 수 있습니다.
서블릿이 종료되면 서블릿 인스턴스는 가비지 수집될 수 있으며 "제거됨" 상태가 됩니다. 서블릿 컨테이너가 닫히면 서블릿도 제거됩니다. 서블릿 인스턴스는 한 번만 초기화될 수 있지만 동일합니다. 서블릿 인스턴스를 생성할 수 있습니다. 예를 들어, 동일한 서블릿은 서로 다른 구성 매개변수에 따라 서로 다른 데이터베이스에 연결할 때 여러 인스턴스를 생성할 수 있습니다.
위 내용은 서블릿은 일반적으로 언제 파괴됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

자바의 암스트롱 번호 안내 여기에서는 일부 코드와 함께 Java의 Armstrong 번호에 대한 소개를 논의합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다
