[Web] 서블릿 필터 (Servlet Filter)

2024. 2. 1. 03:43·Web/Web
728x90

 

 

 

서블릿 필터(Servlet Filter)란?

Client로부터 Server로 요청이 들어오기 전, 서블릿을 거쳐 필터링 하는 것

- 공통적인 요청 전처리와 응답 후처리에 사용

    • 인증, 로깅, 인코딩 등

    • 전처리 / 후처리 코드의 중복 제거에 유용하다

- 보통 하나의 필터를 사용하지만 여러 개의 필터를 사용할 수 있다

    • Filter1 전처리 → Filter2 전처리 → Servlet → Filter2 후처리 → Filter1 후처리

 

 

 

Filter 인터페이스

필터를 설정하는 FilterConfig, FilterChain, Filter 객체 필요

- FilterConfig, FilterChain 인터페이스를 상속받은 클래스들은 웹 컨테이너가 구현

- Filter에 필요한 건사용자 정의 필터 클래스는 javax.servlet.Filter 인터페이스를 구현

- Filter 인터페이스의 메서드

    • init(FilterConfig config) : 서블릿 컨테이너가 필터 인스턴스를 초기화하기 위해 호출하는 메서드

    • doFilter(ServletRequest res, ServletResponse res, FilterChain chain) : 필터에서 구현해야 할 로직을 작성하는 메서드

    • destroy() : 필터 인스턴스를 종료시키기 전 호출하는 메서드

 

 

 

Filter의 적용 : @WebFilter

- @WebFilter : 필터를 등록하는 어노테이션. 적용할 URL 패턴을 지정

...
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.annotation.WebFilter;

// 필터를 적용할 요청의 패턴 지정 - 모든 요청에 필터를 적용.
@WebFilter("/*")
public class PerformanceFilter implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// 초기화 작업
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 1. 전처리 작업
		long startTime = System.currentTimeMillis();

		// 2. 서블릿 또는 다음 필터를 호출
		chain.doFilter(request, response); 
		
		// 3. 후처리 작업
		System.out.print("["+((HttpServletRequest)request).getRequestURI()+"]");
		System.out.println(" 소요시간="+(System.currentTimeMillis()-startTime)+"ms");
	}

	@Override
	public void destroy() {
		// 정리 작업
	}

}

 

 

 

 

 

 

 

 

📌  References

- https://velog.io/@bottlepark/Servlet-07.-Filter

 

Servlet Filter

Servlet Filter란? Client로 부터 Server로 요청이 들어오기 전에 서블릿을 거쳐서 필터링 하는 것을 서블릿 필터라고 한다. 지금까지 Servlet은 였다면 Filter는 이다. Filter의 가 더 부모클래스이다. 즉, 공

velog.io

 

 

 

 

728x90
저작자표시 비영리 (새창열림)

'Web > Web' 카테고리의 다른 글

[Web] 서버 성능 테스트 종류와 도구 및 대규모 트래픽 상황 대비  (0) 2024.05.03
[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL  (1) 2024.02.01
[Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화  (1) 2024.01.31
[Web] HTTP 응답 상태코드와 요청 메서드(GET / POST)  (0) 2024.01.31
[Web] WAS란? 동적 / 정적 콘텐츠, Tomcat 요청 처리 과정  (0) 2024.01.10
'Web/Web' 카테고리의 다른 글
  • [Web] 서버 성능 테스트 종류와 도구 및 대규모 트래픽 상황 대비
  • [Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL
  • [Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화
  • [Web] HTTP 응답 상태코드와 요청 메서드(GET / POST)
s_ih_yun
s_ih_yun
  • s_ih_yun
    CODESYUN
    s_ih_yun
  • 전체
    오늘
    어제
    • 분류 전체보기 (326)
      • Computer Science (26)
        • Concept (3)
        • Algorithm (23)
      • Web (54)
        • Web (7)
        • Spring (14)
        • MyBatis (1)
        • AWS (7)
        • HTML & CSS (14)
        • JavaScript (11)
      • Programming (37)
        • C++ (3)
        • Java (6)
        • Python (10)
        • MySQL (1)
        • Oracle (2)
        • Git (15)
        • Dev Tools (0)
      • Infra˙ DevOps (1)
      • Baekjoon (104)
        • 단계별로 풀어보기 (78)
      • CodeUp (98)
        • Python 기초 100제 (98)
      • Programmers (2)
      • Books (3)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Syun's Pages
  • 인기 글

  • 태그

    CodeUp 기초 100제
    java
    SourceTree
    clean code
    JavaScript
    HTML
    codeup
    oracle
    MySQL
    spring
    알고리즘
    CSS
    VS Code
    web
    Cloud
    자료구조
    github
    Programmers
    Tistory
    db
    웹
    git
    단계별로 풀어보기
    aws
    myBatis
    c++
    BOJ
    Python
    C
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_ih_yun
[Web] 서블릿 필터 (Servlet Filter)
상단으로

티스토리툴바