서블릿은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!