MVC Servlet - controller 작성하기 - 1 https://r-0o0-j.tistory.com/99 [#006888]
▷▶ Servlet Life Cycle 서블릿 라이프 사이클
서블릿을 첫 번째로 요청(request)하면 서블릿 클래스를 로딩하여 객체를 생성하고, 이 객체는 메모리에 계속 남아있게 된다. Client가 같은 서블릿 클래스를 요청하면 메모리에 남아있는 이미 생성된 객체가 다시 호출 된다.
그러므로 수행속도가 빠르다.
1. Client 가 처음으로 서블릿 클래스를 호출
2. 서블릿 클래스의 객체 생성
3. 객체가 생성되면서 init() 메서드 단 한번 호출 - 같은 클래스를 호출해도 init 메서드는 호출 되지 않는다.
4. service() 메서드 실행
- 클라이언트 요청이 있을때마다 service () 메서드 호출
- 여러 클라이언트가 동시에 요청하더라도 스레드가 생성되므로 동시에 메서드가 실행되어도 수행속도가 빠르다.
5. 웹 컨테이너가 종료(톰캣 재가동)되거나 서블릿 내용이 변경되어 재 컴파일 하는 경우에 destroy()가 호출
1. 기본 생성된 클래스에 init( ) 메서드, destroy( ) 메서드 알아보기
[1] init( ) 메서드란?
servlet이 객체화 되었을 때 초기 1회 실행되는 메서드
서버가 유지 된다면 메모리가 제거 되지 않고 새로고침을 눌러도 다시 실행 되지 않는다.
사용 용도 : 정보를 설정할 수 있다. 외부 정해진 데이터를 끌고 와서 메모리에 올려놓고 쓸 수 있다.
초기 필요한 세팅값을 메서드 내에서 세팅 할 수 있다.
[2] destroy( ) 메서드란?
servlet이 제거시 1번 실행 되는 메서드
servlet이 소멸 후 garbage Collection에서 메모리를 관리하는데 garbage Collection에서 메모리가 삭제될 때 사용한다.
Q : Destroy가 실행 되지 않은 객체는 또 실행 할때 init이 실행되는가?
A : 메모리가 제거 되지 않으면 init은 호출 되지 않음 그러나 destroy가 실행되어 메모리가 소멸 되고 다시 객체화 시키기 위해서는 init이 호출된다.
따라서 서버가 종료 되면 메모리가 제거 되어 destroy메서드 가 실행 되고 서버를 재실행 하면 init메서드가 실행된다.
public void init(ServletConfig config) throws ServletException {
String firstParam = config.getInitParameter("firstParam");
System.out.println(firstParam +" <- servlet 실행시 1회 실행 되는 메서드의 파라미터");
}
public void destroy() {
System.out.println("해당 서블릿의 객체가 소멸 될때 호출 되는 메서드");
}
'Backend > JAVA' 카테고리의 다른 글
Connection Pool 이론 (0) | 2020.05.14 |
---|---|
MVC Servlet - controller 작성하기 - 3 (0) | 2020.05.13 |
MVC Servlet - controller 작성하기 - 1 (0) | 2020.05.13 |
MVC (model view controller) 패턴 (0) | 2020.05.13 |
JAVA 인터페이스 interface (0) | 2020.04.29 |
댓글