개발/JSP

JSP 필터

728x90

필터란? 

 

필터는 이름에서도 알 수 있듯 정수기 필터, 에어컨 필터, 담배의 필터와 같이 무언가를 걸러내는 필터를 말합니다. JSP/Servlet 에서도 필터의 개념은 같지만 걸러내는 대상이 다릅니다.

 

Jsp/Servlet에서의 필터는 서블릿 2.3 부터 추가된 기능으로 클라이언트(브라우저)가 서버로 요청을 보내올때 요청이 서블릿으로 전달되기 전, 후에 필터링하기 위한 기술을 의미합니다.

 

Jsp/Servlet 스펙에서 필터는 사용하기 쉽도록 javax.servlet.Filter 인터페이스로 제공하고 있으며 이것을 구현하고 web.xml에 등록하기만 하면 간단하게 사용할 수 있습니다.

 

인터페이스의 구현 메서드는 서블릿의 service() 메서드나 doGet() doPost() 메서드와 유사하기때문에 매우 익숙하게 사용할 수 있습니다.

 

필터를 사용하면 JSP/서블릿 등을 실행하기 이전에 요청이 올바른지 또는 자원에 접근할 수 있는 권한을 가졌는지의 여부를 미리 처리할 수 있다.

 

JSP나 서블릿이 생성한 응답 데이터를 변경하거나 취소할 수 있는 기능 가지고 있음

 

필터의 필터링 대상

필터는 HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 클래스이다. 필터는 객체의 형태로 존재하며 클라이언트에서 오는 요청과 최종 자원 사이에 위치하여 클라이언트의 요청 정보를 알맞게 변경할 수 있다.

필터는 최종자원과 클라이언트로 가는 응답 사이에 위치하여 최종 자원의 요청 결과를 알맞게 변경할 수 있다.

필터링 사용 예

  • 로그인 여부나 권한 검사와 같은 인증
  • 캐싱 필터
  • 요청이나 응답에 대한 로그 기록 기능
  • 오류 처리 기능
  • 데이터 압축이나 변환 기능
  • 인코딩 처리
  • 공통기능 수행
  • 캐릭터 인코딩 필터 

 

 

필터의 구현

 

핵심 타입 3개

  • Filter 인터페이스 : 필터 객체 구현해야 하는 인터페이스
    • init : 초기화
    • doFilter : 클라이언트 요청이 있을 때마다. 필터 기능 수행, chain을 이용해서 체인의 다음 필터로 처리를 전달할  수 있다. 
    •  
    • destroy() : 웹컨테이너에서 삭제될 때 호출된다.
  • ServletRequestWrapper : 필터가 요청을 변경한 결과를 저장하는 래퍼
  • ServletResponseWrapper : 필터가 응답을 변경하기 위해 사용하는 래퍼

 

 

필터 설정하기

 

  • web.xml
    • <filter> <filter-mapping> 태그 사용
  • @WebFilter 애노테이션 이용

 

 

요청 및 응답 래퍼 클래스

요청과 응답을 변경할 때 사용하는 것이 바로 ServletRequestWrapper, ServletResponseWrapper 이다. 

 

 

'개발 > JSP' 카테고리의 다른 글

서블릿이란  (0) 2021.04.19
MVC 패턴  (0) 2021.04.18
ServletContextListener  (0) 2021.04.18