필터(filter)
클라이언트와 서버 사이에서 request와 response 객체를 먼저 받아 사전후 작업 등 공통적으로 필요한 부분을 처리하는 것
Filter 인터페이스를 구현하는 자바 클래스를 생성하고, 생성된 자바 클래스를 web.xml 파일에 등록.
| 필터 | 기능 |
| request 필터 | - 인증(사용자 인증) - 요청 정보를 로그 파일로 작성 - 암호화 인코딩 작업 |
| response 필터 | - 응답 결과 데이터 압축 - 응답 결과에 내용 추가/수정 - 총 서비스 시간 측정 |
Filter 인터페이스
필터 기능을 구현하는 데 핵심적인 역할을 하고 jakarta.servlet.Filter를 임포트해야함.
import jakarta.servlet.*;
public class 클래스 이름 implements Filter {
...(생략)...
}
| 메소드 | 설명 |
| init( ) | 필터 인스턴스의 초기화 메소드 |
| doFilter( ) | 필터 기능을 작성하는 메소드 |
| destroy( ) | 인스턴스의 종료 전에 호출되는 메소드 |
init( ) 메소드
JSP 컨테이너가 필터를 초기화할 때 호출되는 메소드
public void int(FilterConfig filterConfig) throws ServletException
이 메소드는 JSP 컨테이너 내에서 초기화 작업을 수행할 필터 인스턴스를 생성한 후 한 번만 호출되며, 이 메소드는 JSP 컨테이너에 의해 호출되어 필터의 서비스가 시작되고 있음을 나타냄.
매개변수 FilterConfig 객체는 JSP 컨테이너가 초기화 중 필터에 정보를 전달하는 데 사용하는 필터 구성 객체이며 아래와 같은 메소드를 지원함.
| 메소드 | 반환 유형 | 설명 |
| getFilterName( ) | String | web.xml 파일에 설정된 필터 이름을 반환한다. |
| getInitParameter(String name) | String | web.xml 파일에 설정된 매개변수에 대한 매개변수 값을 반환한다. 초기화 매개변수가 존재하지 않으면 null을 반환한다. |
| getInitParameterNames( ) | Enumeration<String> | web.xml 파일에 설정된 모든 매개변수 이름을 포함하는 Enumeration 객체 타입을 반환한다. 초기화 매개변수가 존재하지 않으면 비어 있는 Enumeration을 반환한다. |
| getServletContext( ) | ServletContext | SevletContext 객체를 반환한다. |
doFilter( ) 메소드
JSP 컨테이너가 필터를 리소스에 적용할 때마다 호출되는 메소드
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException, ServletException
이 메소드는 init( )메소드 후에 호출되며, 필터가 어떤 기능을 수행할 필요가 있을 때마다 호출 됨.
첫 번째 매개변수 ServletRequest 객체는 체인을 따라 전달하는 요청이고,
두 번째 매개변수 ServletResponse 객체는 체인을 따라 전달할 응답이고,
세 번째 매개변수 FilterChain 객체는 체인에서 다음 필터를 호출하는데 사용되는데, 만약 호출 필터가 체인의 마지막 필터이면 체인의 끝에서 리소스를 호출함.
필터는 연속된 체인을 따라 다음에 존재하는 필터로 이동하여 연속적으로 수행하는데, 이때 수행해야 할 필터 객체는 doFilter( )메소드의 매개변수 FilterChain 객체로 전달 됨.
FilterChain 객체는 동기화를 위해서도 존재하지만 필터의 수행 과정을 연속적으로 하는 방법으로도 사용됨.
| 메소드 | 반환 유형 | 설명 |
| doFilter(ServletRequest request, ServletResponse response) | void | 체인의 다음 필터 또는 리소스로 제어를 전달. |
destroy( ) 메소드
필터 인스턴스를 종료하기 전에 호출하는 메소드
public void destroy()
JSP 컨테이너가 필터 인스턴스를 삭제하기 전에 청소 작업을 수행하는 데 사용되며, 이는 필터로 열린 리소스를 모두 닫을 수 있는 방법이며, 이 메소드는 필터의 수명 동안 한 번만 호출됨.
web.xml 파일의 필터 구성
필터를 사용하려면 어떤 필터가 어떤 리소스에 대해 적용되는지 JSP 컨테이너에 알려주어야 하는데, 이는 WEB-INF폴더의 web.xml파일에서 필터를 설정하며, 필터를 설정할 때 <filter>와 <filter-mapping>요소를 사용함.
<filter>
<filter-name>...</filter-name>
<filter-class>...</filter-class>
[<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
</init-param>]
</filter>
<filter-mapping>
<filter-name>...</filter-name>
<url-pattern>...</url-pattern>
</filter-mapping>
- <filter>를 구성하는 하위 요소
| 요소 | 설명 |
| <filter-name> | 필터 이름을 설정 |
| <filter-class> | 자바 클래스 이름을 설정 |
| <init-param> | 매개변수와 값을 설정 |
<filter>
<filter-name>필터 이름</filter-name>
<filter-class>클래스 이름</filter-class>
[<init-param>
<param-name>매개변수 이름</param-name>
<param-value>매개변수 값</param-value>
</init-param>]
</filter>
//<init-param>요소에 설정된 매개변수와 값을 자바 또는 JSP 코드에서 접근하는 형식
String value = getServletConfig().getInitParameter("매개변수 이름");
- <filter-mapping>을 구성하는 하위 요소
| 요소 | 설명 |
| <filter-name> | 필터 이름을 설정 |
| <url-pattern> | URL 패턴을 설정 |
<filter-mapping>
<filter-name>필터 이름</filter-name>
<url-pattern>요청 URL 패턴</url-pattern>
</filter-mapping>
** 요청 URL 패턴의 유형
| URL 패턴 | 설명 |
| *.do | .do로 끝나는 모든 URL과 일치하는 파일 확장 패턴 |
| /BookMarket/* | /BookMarket/으로 시작하는 모든 URL과 일치하는 경로 패턴 |
| /MyFilter.jsp | /MyFilter.jsp로만 일치하는 특정 패턴 |
| /BookMarket/cart.jsp | /BookMarket/cart.jsp로만 일치하는 특정 패턴 |
'JSP' 카테고리의 다른 글
| [JSP] 쿠키 (0) | 2025.12.05 |
|---|---|
| [JSP] 세션 (0) | 2025.12.05 |
| [JSP] 예외처리 (0) | 2025.12.04 |
| [JSP] 시큐리티 (0) | 2025.12.04 |
| [JSP] 다국어 처리 (0) | 2025.12.04 |