웹 필터를 적용하는 방법이야 사실 검색하면 여러 방법이 나온다.
웹 필터를 사용하는 목적은 서블렛에게 요청이 전달하기 전에 무언가 행동을 하기 위해서이다.
가령, 웹 필터를 활용하면 요청이 도착하기전에 Parameter에 불필요한 내용이 있는지 검사를 하거나, 크로스 도메인 문제를 해결하기 위한 세팅을 하거나, 약속된 규칙이 맞는지 검사를 하기위해 사용된다 할 수 있다.
그런데, 이러한 웹 필터를 모든 요청에 걸어주게되면, 웹 필터가 jpg, png, js 등 굳이 검사를 해도 되지 않는 대상까지 필터를 하게 되어 속도가 느려지거나 402, 400 등의 오류를 만나기도 한다.
Spring boot에서 웹필터를 사용하는 방법중에 @WebFilter 에노테이션을 활용하면 편리하다.
먼저 메인메소드가 존재하는 클래스를 수정한다.
@SpringBootApplication
@ServletComponentScan //스캔설정
public class SpringBootApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootApplication.class);
}
}
다음에 웹 필터를 상속받는 클래스를 만든다.
@WebFilter(urlPatterns = { "/요청1","/요청2".. })
public class AllowFillterChecker implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//들어온 요청에 대한 행동
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
웹필터 에노테이션에 urlPatterns 내부에 배열형태로 원하는 요청값을 넣어주면 된다.
저렇게 하면 내가 원하는 요청에 대해서만 필터클래스를 동작시킬 수 있어서 불필요한 필터링은 하지 않게 되는 것 이다.
반응형
'Spring framework > Spring boot' 카테고리의 다른 글
Spring boot 인터셉터, Spring boot Interceptor, 스프링부트 인터셉터 (0) | 2019.12.02 |
---|---|
STS git 추가, STS 깃 연동, STS 리눅스 git 서버 연동 (0) | 2019.11.12 |
Spring boot maven 빌드, Spring boot maven export (0) | 2019.11.11 |
Gradle에서 Lombok이 포함된 프로젝트 export시 유의사항 (0) | 2019.04.29 |
STS 버전 4.2.0에서의 스프링부트 시작 및 빌드하기 (0) | 2019.04.29 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글