" ServletContextListener "
서블릿컨텍스트리스너는 컨텍스트 초기화 파라미터를 읽어들여 파라미터를 인자로 하여 객체를 생성한다.그 다음 리스너는 객체를 ServletContext 속성에 묶어 둔다.
그러면 서블릿에서는 객체를 끄집어 낼 수가 있다. 이 부분이 핵심인데 이렇게 하면 서블릿이 객체를 공유 할 수 가 있다. 이제 서블릿이 컨텍스트 파라미터를 읽을 필요가 없다.객체를 끄집어 내어 사용하면 된다.
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event)
{
//DB연결이라면 초기화 코딩, 객체 컨텍스트에 담기.
ServletContext sc = event.getServletContext(); //이벤트에게 컨텍스트를 얻어온다
String value = sc.getInitParameter("test"); //컨텍스트에서 초기화 파라미터를 읽는다
Dog dog = new Dog(value); //일반 자바객체를 만들고
sc.setAttribute("dog",dog); //콘텍스트에 저장한다.
}
public void contextDestroyed(ServletContextEvent event)
{
// DB연결이라면 해제코딩, 객체라면 할 일 없음. 컨텍스트가 소멸된다는 것은 모든 애플리 케이션이
// 소모 되고 Dog객체도 사라질것이기 때문이다.?? 모든 어플리케이션이 소모될 거라면 DB연결도 자동으로 끊김..
}
}
* ServletContext 이벤트를 리스닝하기 위해선 ServletContextListener를 구현해야 한다.
* 그 다음 컴파일된 클래스를 WEB-INF/calsses 디렉토리에 배포하고 DD 파일에 <listener> 항목을 추가하여
* 컨테이너에게 이런 놈이 있다는 것을 알려야 한다.
[참고] 클래스가 들어갈수 있는 부분은 WEB-INF/classes 뿐만은 아니다. 컨테이너가 클래스를 찾는 곳 중 하나일 뿐이다.
> DD 에서...
<listener>
<listener-class> org.thinker.MyservletContextListener </listener-class>
</listener>
>컨텍스트리스너를 사용하려면 3개의 클래스와 DD파일이 필요하다. ServletContextListener를 구현한 클래스,
평범한 자바객체 클래스, 서블릿 클래스, DD파일
- 다른종류의 리스너들 - ( 만약 필요하다면 API찾아보자 )
javax.servlet.ServletContextAttributeListener : 컨텍스트에 속성을 추가,제거,수정했는지 알고 싶을 때..
javax.servlet.http.HttpSessionListener : 얼마나 많은 동시 사용자가 물려 있는지..
javax.servlet.HttpRequestListener : 요청이 들어올때마가 알고 싶을때..로그를 남기고 싶어서 그럴때.
javax.servlet.ServletRequestAttributeListener : Request속성이 추카,제거,수정 되었는지 알고 싶을때.
javax.servlet.http.HttpSessionBindingListener : 속성 객체가 하나 있는데 이 객체가 세션에 바인딩 되었는지 아니면 제거
되었는지 알고싶을때.
javax.servlet.http.HttpSessionAttributeListener : 세션 속성이 추가,제거,수정 되었는지 알고 싶을때.
javax.servlet.http.HttpSessionActivationListener : 속성 객체가 하나 있는데, 세션에 바인딩한 이 타입의 객체가 다른
JVM으로 옮겨 갔는지,또는 왔는지 알고 싶을때.
'web.. > servlet/jsp' 카테고리의 다른 글
서블릿 welcome-file 변경 (0) | 2013.03.19 |
---|---|
ServletConfig & ServletContext (0) | 2013.01.09 |
HttpServletRequest 객체 & HttpServletResponse 객체 (0) | 2013.01.09 |
서블릿의 생명주기 & 멱등 (0) | 2013.01.09 |
HTML과 HTTP (0) | 2013.01.09 |