본문 바로가기
Backend/JAVA

MVC Servlet - controller 작성하기 -2

by YERIEL_염주둥 2020. 5. 13.
728x90

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

댓글