728x90
Filter API는 클라이언트에서 서버로 요청할 때, 서블릿이 요청을 받기 전과 응답하기 전에 특정 작업을 수행할 수 있도록 한다. 즉, 웹 컴포넌트가 실행되기 전의 선처리 작업과 응답되기 전의 후처리 작업을 수행하는 API이다. 다수의 Filter을 체인(chain)으로 묶어서 사용할 수도 있다.
필터 클래스 구현
- package 지정 필수
- Filter 인터페이스 구현
- doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- 필터 맵핑 (web.xml)
doFilter() 메서드에 실질적으로 필터가 제공할 사전 처리와 사후 처리 로직을 작성한다.
package com.filter;
public class MyFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("요청필터 사전처리 코드 작업");
chain.doFilter(request, response);
System.out.println("응답필터 사후처리 코드 작업");
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("MyFilter 초기화");
}
}
필터매핑
web.xml에 작성하는 방법과 어노테이션을 이용하는 방법이 있다.
<!-- web.xml -->
<filter>
<filter-name>필터클래스명</filter-name>
<filter-class>패키지 경로를 포함한 필터클래스</filter-class>
</filter>
<filter-mapping>
<filter-name>필터 매핑명</filter-name>
<url-pattern>/디렉토리</url-pattern>
</filter-mapping>
<url-pattern>
: 클라이언트에서 요청하는 URL 값의 패턴에 따라 서버에 저장된 어떤 웹 컴포넌트가 실행될지 결정- 디렉터리 패턴 :
/디렉터리
(/*
로 지정하면 클라이언트가 요청하는 서블릿과 무관하게 항상 수행 ) - 확장자 패턴 :
*.
- 디렉터리 패턴 :
테스트
MyFilter.java
package com.filter;
public class MyFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("MyFilter.doFilter 전전전전");
chain.doFilter(request, response);
System.out.println("MyFilter.doFilter 후후후후");
}
}
web.xml
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/test</url-pattern>
</filter-mapping>
※ 주로 POST의 한글처리를 하는request.setCharacterEncoding("utf-8");
를 사전처리 필터에 작성한다.
728x90
'WebServer > JSP&Servlet' 카테고리의 다른 글
[Servlet] 요청 위임 (0) | 2023.08.16 |
---|---|
[Servlet] 서블릿과 DB 연동 (MyBatis 활용) (0) | 2023.08.15 |
[Servlet] 서블릿 스코프 (Scope) (0) | 2023.08.10 |
[Servlet] Servlet 핵심 객체 - ServletConfig , ServletContext (0) | 2023.08.10 |
[Servlet] Servlet 요청 및 응답 처리 (0) | 2023.08.09 |