web.xml Listener, Filter의 활용

By | Y2014Y2014-10M-D

web.xml Listener, Filter의 활용

1. Listener의 이해

1.1 Listener 란

  • 어떠한 이벤트가 발생하면 호출되어 처리하는 객체.

1.2 Listener 사용법

  • 구현할 기능과 관련된 각종 인터페이스만 제공함으로 클래스는 구현해야함.

1.3 Listener 인터페이스 종류

  • ① ServletContextListener
    웹 어플리케이션의 시작과 종료시 자동으로 발생되는 이벤트를 수행하기 위한 메소드를 정의한 인터페이스이다.

    Listener 객체 설명
    contextInitialized(ServletContextEvent sce) : void 웹 컨테이너가 처음 구동될 때 실행되는 메소드
    contextDestoryed(ServletContextEvent sce) : void 웹 컨테이너가 종료될 때 실행되는 메소드
  • ② ServletContextAttributeListener
    컨테이너에 저장된 속성 값들의 변화가 있을 때 수행하기 위한 메소드를 정의한 인터페이스이다.

    Listener 객체 설명
    attributeAdded(ServletContextAttributeEvent scae) : void 새로운 속성 값이 추가될 때 실행되는 메소드
    attributeRemoved(ServletContextAttributeEvent scae) : void 속성 값이 제거될 때 실행되는 메소드
    attributeReplaced(ServletContextAttributeEvent scae) : void 속성 값이 변경될 때 실행되는 메소드
  • ③ HttpSessionListener
    HTTP 세션이 활성화 되거나 비활성화 되려할 때 혹은 속성 값들이 추가, 삭제, 변경될 경우 수행하기 위한 인터페이스

    Listener 객체 설명
    sessionCreated(HttpSession se) : void 세션이 생성되었을 경우 이 메소드가 실행
    sessionDestoryed(HttpSession se) : void 세션이 무효화 되었을 경우 이 메소드 실행
  • ④ HttpSessionAttributeListener
    HTTP 세션에 대한 속성 값이 변경되었을 경우 수행하기 위한 인터페이스

    Listener 객체 설명
    attributeAdded(HttpSessionBindingEvent e) : void 세션에 새로운 속성 값이 추가될 때 실행
    attributeRemoved(HttpSessionBindingEvent e) : void 세션의 속성 값이 제거될 실행
    attributeReplaced(HttpSessionBindingEvent e) : void 세션의 속성 값이 변경될 때 실행
  • ⑤ HttpSessionActivationListener
    세션에 대한 내용이 새로 생성되어 세션이 활성화 되었을 때 발생하는 이벤트를 수행하기 위한 인터페이스

    Listener 객체 설명
    sessionDidActivate(HttpSessionEvent e) : void 세션이 활성화 될 때 실행
    sessionWillPassivate(HttpSessionEvent e) : void 세션이 비활성화 되려고 할 때 실행
  • ⑥ HttpSessionBindingListener
    클라이언트의 세션 정보에 대한 바인딩이 이루어졌을 경우 감지되는 이벤트를 수행하기 위한 인터페이스

    Listener 객체 설명
    valueBound(HttpSessionBindingEvent e) : void 세션에 연결될 때 발생하는 이벤트를 실행
    valueUnBound(HttpSessionBindingEvnet e) : void 세션으로부터 연결이 해제될 때 발생하는 이벤트를 실행

1.4 Listener 간단예제

  • 웹서버가 시작될때 동작하는 리스너.

① 해당이벤트가 발생했을 경우 수행할 리스너 클래스 작성

com.test.TestListener.java

② web.xml에 리스너 등록

web.xml

2. Filter의 이해

2.1 Filter란

  • 필터는 ‘HTTP 요청과 응답을 변경할 수 있는 재사용가능한 코드’이다.
    필터는 객체의 형태로 존재하며 클라이언트로부터 오는 요청(request)과 최종 자원(서블릿/JSP/기타 문서) 사이에
    위치하여 클라이언트의 요청 정보를 알맞게 변경할 수 있으며, 또한 필터는 최종 자원과 클라이언트로 가는 응답(response)
    사이에 위치하여 최종 자원의 요청 결과를 알맞게 변경할 수 있다.

    출처:http://javacan.tistory.com

  • 세션관리,로그파일관리,인코딩관리,데이터 압축 등의 작업을 할수있다.

2.2 Filter Chain 이란

출처:http://javacan.tistory.com

  • 여러 개의 필터가 모여서 하나의 체인을 형성할 때 첫번째 필터가 변경하는 요청 정보는 클라이언트의 요청 정보가 되지만,
    체인의 두번째 필터가 변경하는 요청 정보는 첫번째 필터를 통해서 변경된 요청 정보가 된다.
    즉, 요청 정보는 변경에 변경에 변경을 거듭하게 되는 것이다. 응답 정보의 경우도 요청 정보와 비슷한 과정을 거치며
    차이점이 있다면 필터의 적용 순서가 요청 때와는 반대라는 것이다.

2.3 Filter 인터페이스

Filter 객체 설명
public void init(FilterConfig filterConfig) throws ServletException 필터를 웹 콘테이너내에 생성한 후 초기화할 때 호출
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException
체인을 따라 다음에 존재하는 필터로 이동한다. 체인의 가장 마지막에는 클라이언트가 요청한 최종 자원이 위치한다.
public void destroy() 필터가 웹 콘테이너에서 삭제될 때 호출

2.4 Filter 간단 예제

com.example.web.LoginCheckFilter.java
web.xml

문서정보

4,756 total views, 1 views today

댓글 남기기