■ 웹 어플리케이션 구성 요소
서블릿(Servlet)
- 클라이언트 요청을 처리하는 역할을 합니다.
필터(Filter)
- 요청 처리 전/후에 작업을 수행하는 역할을 합니다.
리스너(Listener)
- 특정 상태에 놓일 때 작업을 수행하는 역할을 합니다.
▶ 먼저 Listener 리스너 예제를 보겠습니다.
─────
ServletContextListener?
웹 애플리케이션이 시작되거나 종료되는 상태에 대한 작업을 수행합니다.
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class Listener01 implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { // ServletContext 객체가 생성되었을 때 호출된다. // 즉 웹 애플리케이션이 시작되었을 때 호출된다. System.out.println("====> Listener01.contextInitialized()"); } @Override public void contextDestroyed(ServletContextEvent sce) { // ServletContext 객체가 소멸되기 직전에 호출된다. // 즉 웹 애플리케이션이 종료되기 직전에 호출된다. System.out.println("====> Listener01.contextDestroyed()"); } }
─────
ServletRequestListener?
클라이언트로부터 요청이 들어오거나 서버에서 응답을 수행할 때 발생하는
이벤트에 대한 작업을 수행합니다.
import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; import javax.servlet.annotation.WebListener; @WebListener public class Listener02 implements ServletRequestListener { @Override public void requestInitialized(ServletRequestEvent sce) { // ServletRequest 객체가 생성되었을 때 호출된다. // 즉 클라이언트로부터 요청이 들어 올 때 호출된다. System.out.println("====> Listener02.requestInitialized()"); } @Override public void requestDestroyed(ServletRequestEvent sce) { // ServletRequest 객체가 소멸되기 직전에 호출된다. // 즉 클라이언트에게 응답했을 때 호출된다. System.out.println("====> Listener02.requestDestroyed()"); } }
─────
ServletRequestAttributeListener?
ServletRequest 객체에 값을 저장, 제거 혹은 변경할 때 호출된다.
import javax.servlet.ServletRequestAttributeEvent; import javax.servlet.ServletRequestAttributeListener; import javax.servlet.annotation.WebListener; @WebListener public class Listener03 implements ServletRequestAttributeListener { @Override public void attributeAdded(ServletRequestAttributeEvent sce) { // ServletRequest 객체에 값을 저장할 때 호출된다. // 즉 req.setAttribute(...) 호출할 때 System.out.printf("====> Listener03.attributeAdded(): %s=%s\n", sce.getName(), sce.getValue()); } @Override public void attributeRemoved(ServletRequestAttributeEvent sce) { // ServletRequest 객체에서 값을 제거할 때 호출된다. System.out.println("====> Listener03.attributeRemoved()"); } @Override public void attributeReplaced(ServletRequestAttributeEvent sce) { // ServletRequest 객체에 저장된 값을 변경할 때 호출된다. System.out.println("====> Listener03.attributeReplaced()"); } }
서버에 add한 프로젝트 폴더의 경로를 찾아가 웹브라우저에서 url 주소를 치면
클라이언트의 요청을 인식하고 각 Listener에서 객체를 생성합니다.
이를 통해 어느 시점에서 Listener가 생성 - 소멸되는지 확인할 수 있습니다.
'Programming > java' 카테고리의 다른 글
[Java] 쿠키(Cookie)의 개념과 사용 방법을 쉽게 알아보자! (0) | 2017.06.12 |
---|---|
[Java] URL 인코딩이란 무엇인가? (2) | 2017.06.12 |
[Java][Gradle] 이클립스를 이용해 gradle에 대해 배워보자 ! :: gradle 사용법과 이클립스 설정 파일 만들기 (0) | 2017.06.08 |
[Java] 서블릿(Servlet)과 생명주기 메소드란? : init(), destroy(), service() (0) | 2017.06.02 |
[Java] 톰캣(tomcat)의 디렉토리 구조를 알아보자! (+ 이클립스 웹 어플리케이션 프로젝트 폴더 구조) (0) | 2017.06.02 |