본문 바로가기
JSP

[JSP] 필터

by lmyourpearl 2025. 12. 5.

필터(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