2011-05-16 6 views
0

서블릿은 init()를 사용하여 서블릿 상태를 초기화하고 파괴하여 제거합니다. init()과 destroy()를 넣기 위해 필요한 특별한 클래스 이름이 있습니까? 서블릿은 이러한 메소드를 어디에서 찾을 수 있는지 어떻게 알 수 있습니까?자바 서블릿 init과 destroy

asp.net asp.net에서 비슷한 것을 처리하는 global.asax가 있으며 서블릿에는 동일한 작업을 수행하는 특수 클래스가 있습니까?

감사합니다.

답변

1

Servlet 클래스와 동일한 클래스 여야합니다.

모든 서블릿은 기본 서블릿 클래스에서이 메소드를 상속합니다. 추가 처리를하고 싶지 않다면, 상속받은 메소드는 괜찮을 것이고 각 서블릿에서이 메소드를 오버라이드 할 필요가 없다.

+0

하지만 서블릿 클래스는 무엇입니까? 어느 수업에이 두 가지 방법을 넣어야합니까? – icn

+0

모든 서블릿은 기본 Servlet 클래스에서이 메소드를 상속합니다. 추가 처리를하고 싶지 않다면, 상속받은 메소드는 괜찮을 것이고 각 서블릿에서이 메소드를 오버라이드 할 필요가 없다. –

+0

@icn –

3

서블릿은 궁극적으로 이러한 메서드를 정의하는 javax.servlet.Servlet 클래스의 하위 클래스입니다.

+0

그래서 두 서블릿 클래스에이 두 메소드를 넣고 한 번만 넣으면 JVM 또는 Tomcat 서버가이 두 메소드를 어디에서 찾을 것인가? – icn

+0

오른쪽, 서블릿 컨테이너는 클래스를 서블릿 개체로 액세스하고 이러한 메서드를 호출합니다. – dlev

0

Servlet을 실행하는 JVM은 Servlet 또는 HttpServlet까지 확장되는 클래스에서만 해당 메소드를 찾습니다.

0

서블릿은 관리 대상입니다. 즉, 라이프 사이클을 관리하는 컨테이너 내부에서 실행됩니다 (서블릿을 인스턴스화하고 적절한 방법을 호출하여 적절할 때 호출하고 해제합니다). 컨테이너 (Tomcat, Glassfish, ...)는 이런 방식으로 구현되기 때문에 적절한시기에 이러한 메소드를 호출 할 때를 알고 있습니다. 특별한 것은 없습니다.

컨테이너에 버그가있는 경우 초기화 시간에 destroy()를 호출하고 삭제시 init()을 호출 할 수도 있습니다. 그 버그는 빨리 고쳐질 것입니다.

1

서블릿은 컨테이너 (웹 서버/응용 프로그램 서버)에 배포됩니다. 컨테이너는 서블릿의 초기화 또는 삭제를 처리하며, 특정 클래스를 사용하는 경우 서블릿을 초기화하고 소멸하는 사전 정의 된 클래스가 없습니다. 우리는 권장하지 않는 클래스 (밀접하게 결합)에 의존합니다. 이제 GenericServlet과 HttpServlet 클래스를 사용하여 J2EE API를 참조하고이 클래스와 메소드를 찾습니다.