Filter
웹 애플리케이션에서 필터는 클라이언트 요청을 처리하기 전에 특정 작업을 수행하거나 응답을 처리한 후 특정 작업을 수행할 수 있도록 해주는 컴포넌트입니다. 필터는 일반적으로 인증, 로깅, 데이터 압축 등의 작업을 처리하는 데 사용됩니다.
시나리오
클라이언트가 user phone, email, age 데이터를 보냈다고 가정했을 때, 실제로 받은 데이터는 email과 age 뿐입니다. 그렇다면 데이터가 어디서 사라졌는지 확인해야 합니다.
HttpEntity를 활용한 데이터 처리
HttpEntity는 HTTP 요청이나 응답 엔티티를 나타내는 클래스입니다. 이를 통해 요청 본문과 헤더를 다룰 수 있습니다.
Filter 구현
필터는 스프링 부트에서 @Component와 javax.servlet.Filter 인터페이스를 사용하여 쉽게 구현할 수 있습니다.
1. 필터 클래스 작성
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 작업
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
// 요청에서 email과 age 데이터를 추출
String email = httpRequest.getParameter("email");
String age = httpRequest.getParameter("age");
// 추출된 데이터 처리 (여기서는 단순히 출력)
System.out.println("Email: " + email);
System.out.println("Age: " + age);
// 필터 체인 계속 진행
chain.doFilter(request, response);
}
@Override
public void destroy() {
// 필터 종료 작업
}
}
2. 필터 등록
필터를 스프링 부트 애플리케이션에 등록하려면 @Component 어노테이션을 사용하거나, FilterRegistrationBean을 통해 명시적으로 등록할 수 있습니다.
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<CustomFilter> loggingFilter() {
FilterRegistrationBean<CustomFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new CustomFilter());
registrationBean.addUrlPatterns("/api/*");
return registrationBean;
}
}
요약
- 클라이언트가 데이터를 보냈지만 일부 데이터가 누락된 경우 필터를 사용하여 문제를 해결할 수 있습니다.
- @Component와 Filter 인터페이스를 사용하여 필터를 구현합니다.
- 필터를 통해 HTTP 요청의 데이터를 추출하고 필요한 처리를 수행합니다.
- FilterRegistrationBean을 사용하여 필터를 애플리케이션에 등록합니다.
이러한 방식으로 필터를 통해 데이터가 사라진 부분을 확인하고 처리할 수 있습니다.
'JAVA > 자바 공부' 카테고리의 다른 글
멀티모듈 - config 설정 - swagger 사용 (0) | 2024.06.25 |
---|---|
자바 DB 1:N 관계 어노테이션 적용법 2024-06-23 (0) | 2024.06.23 |
자바 로그인 처리(session) 2024-06-23 (0) | 2024.06.23 |