카테고리 없음

Servlet(Filter, Listener, Servlet)

아리빠 2024. 1. 18. 16:23

서블릿 컨테이너가 관리하는 컴포넌트

=> 서블릿, 필터, 리스너

 

Filter

// 필터 만들기
// => javax.servlet.Filter 인터페이스 규칙에 따라 작성한다.
//
// 필터 배포하기
// => DD 파일(web.xml)에 설정하기
//      <!-- 필터 등록 -->
//      <filter>
//          <filter-name>f01</filter-name>
//          <filter-class>com.eomcs.web.ex02.Filter01</filter-class>
//      </filter>
//
//      <!-- 필터를 적용할 URL 설정 -->
//      <filter-mapping>
//          <filter-name>f01</filter-name>
//          <url-pattern>/ex02/*</url-pattern>
//      </filter-mapping>
// => 애노테이션으로 설정하기
//      @WebFilter(URL)

 

필터의 용도

-> 서블릿을 실행하기 전후에 필요한 작업을 수행

-서블릿 실행전

웹브라우저가 보낸 암호화된 파라미터 값을 서블릿으로 전달하기 전 암호 해체

웹브라우저가 보낸 압축된 데이터를 서블릿으로 전달하기 전 압축 해제

서블릿의 실행을 요청할 권한이 있는지 검사

로그인 사용자인지 검사

로그 남기기

 

-서블릿 실행후

클라이언트로 보낼 데이터 압축

클라이언트로 보낼 데이터 암호화

 

*필터의 실행순서는 임의로 조정 불가

필터를 정의할 때 순서에 의존하는 방식으로 프로그래밍 x

 

 

Listener

// 리스너 만들기
// => 서블릿 컨테이너 또는 서블릿, 세션 등의 객체 상태가 변경되었을 때 보고 받는 옵저버
// => "Observer" 디자인 패턴이 적용된 것이다.
// => ServletContextListener
//    - 서블릿 컨테이너를 시작하거나 종료할 때 보고 받고 싶다면 이 인터페이스를 구현하라.
// => ServletRequestListener
//    - 요청이 들어오거나 응답할 때 보고 받고 싶다면 이 인터페이스를 구현하라.
// => HttpSessionListener
//    - 세션이 생성되거나 종료될 때 보고 받고 싶다면 이 인터페이스를 구현하라.
// => XxxListener
//    - 기타 다양한 인터페이스가 있다. 문서를 참고하라.
//
// 리스너 배포하기
//=> DD 파일(web.xml)에 설정하기
//      <listener>
//          <listener-class>com.eomcs.web.ex02.Listener01</listener-class>
//      </listener>
//
//=> 애노테이션으로 설정하기
//      @WebListener

 

리스너의 용도

서블릿 컨테이너나, 세션 등이 특별한 상태일 때 필요한 작업을 수행

// => ServletContextListener
//    - 웹 애플리케이션을 시작할 때 Spring IoC 컨테이너 준비하기
//    - 웹 애플리케이션을 시작할 때 DB 커넥션 풀 준비하기
//    - 웹 애플리케이션을 종료할 때 DB 커넥션 풀에 들어 있는 모든 연결을 해제하기
// => ServletRequestListener
//    - 요청이 들어 올 때 로그 남기기