[Servlet] Servlet 생성시 초기화방법, 용도 / Listener Servlet

1. Servlet을 초기화 하기

Servlet은 생성과 동시에 parameter를 불러들여 자신의 멤버로 가진 채 생성될 수 있다.
이렇게 Servlet을 초기화 하는 방법은 두 가지가 있다.

1) web.xml 파일에 Servlet을 Mapping하고 Servlet 태그 안에 init param 태그를 추가하는 방법이 그 첫 번째이고

2) 그리고 Servlet java 코드에서 Annotation으로 처리하는 방법이 있다.

이 전에 URL을 Mapping해주는 annotation을 배웠다. @WebServlet("/URL") <<<
사실 이 annotation은 url mapping외에도 초기화 역할까지 수행할 수 있었다. 바로 이렇게.
@WebServlet(urlPatterns={"/Login"}, initParams={@WebInitParam(name="id", value="abcd")}) 와 같은 방식으로 말이다.

일단 보는 사람은 xml이 보기 좋을 것 같고 코딩하는 사람은 annotation이 편할 것 같다.
그렇다면 이 Servlet의 초기화는 어느 경우에, 어떤 parameter를 가지고 쓰게 될까?

2. Listener

Listener에 대해서 알아보자. Listener는 Context가 실행되고 종료되는 것을 감지하고 지정한 메소드를 수행하는 Servlet을 말한다. 그래서 Context가 실행/종료될 때 수행해야하는 메소드를 당연히 Override해야한다.

public class Listener implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("Server destroyed");
}

@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Server Initialized");
}
}

어제 공부한 내용중 Servlet LifeCycle에서 오늘 배운 초기화와 비슷한 기능들이 있었다.
바로 @PostConstructor와 @PreDestroy이다.
@PostConstructor -> Post는 '~이후에'라는 뜻이다. 즉, 생성자가 실행된 이후 ~ 초기화가 되기 전에 실행되는 메소드를 의미한다.
@PreDestroy -> Pre는 '~이전에'란 뜻이다. 즉, Servlet객체가 사라지기전에 실행되는 메소드이다.

댓글

이 블로그의 인기 게시물

로컬 Tomcat 서버 실행속도 개선

2019.05.23 - SQLAlchemy 의 객체 상태 관리 (expire, refresh, flush, commit) 에 관한 이해

2020.02.17 Python의 multiprocessing 중 Pool.map(), chunksize에 관한 내용