웹 어플리케이션 구성 요소


서블릿(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가 생성 - 소멸되는지 확인할 수 있습니다.





블로그 이미지

필로그래머

,

[Java] 자바 이클립스 - 톰캣(tomcat)  or 웹 어플리케이션 서버의 실행 환경을 구축해보자! 여기선 톰캣을 예로 들겠다.



이클립스에 톰캣 실행환경 구축하는 방법

 

1) tomcat.apache.org 사이트에 들어가 아래 버전(현재는 8.5.15 - 안정성이 높다)의 zip 파일을 로컬 디스크 (C:)에 다운 받고 압축을 푼다.




2) 톰캣 서버(or 웹 애플리케이션 서버)가 설치된 폴더를 등록한다


Eclipse 실행 - 메뉴창 

 > Window > Preferences > Server 노드 > Runtime Environments > add > Apache  > 다운받은 톰캣 버전을 선택!


 > Browse > apache-tomcat-8.5.15 > ok




3) 톰캣(or 웹 애플리케이션 서버) 실행 환경을 구축해본다

Window > show view> Servers > 창에서 오른쪽 클릭 > new > 다운받은 톰캣 버전 선택! > Finish

 * 웹 애플리케이션 서버 실행 환경은, 이클립스에 설정된 서버에 대해서만 실행

   환경을 구축할 수 잇다.



4) 웹 애플리케이션 서버 실행 환경 시작하기

Servers > 서버실행환경 선택 > start 클릭

 - 웹브라우저의 url 주소에 localhost:8080 을 치면 톰캣 서버가 실행되고 있는 것을

   알 수 있다. (404 error가 뜬다는 것은 서버가 '연결'되었다는 의미이다.)



5) 실행환경이 구축된 폴더 확인하기

workspace 폴더 (ex: c:/workspace)/.metadata/.plugins

/org.eclipse.wst.server.core/tmp0    -----> tmp0은 임시폴더이다!! 이클립스를 제외한

편집기에서 바꾸면 절대 안된다. 이클립스에서 tmp0/server.xml 파일의 포트 번호(port)를 변경할 수 있다.











블로그 이미지

필로그래머

,