spring boot 필터 필터 등록 Bean 구현 방식
1:FilterRegistration Bean 인 스 턴 스 를 통 해 등록
2:@WebFilter 주석 을 통 해 적용
두 번 째 는 필터 사이 의 우선 순 위 를 설정 할 수 없 기 때문에 첫 번 째 를 선택 하 십시오.
우선 순 위 를 보 여주 기 위해 테스트 필터 클래스 2 개 를 만 듭 니 다:Test1Filter,Test2Filter
javax.servlet.Filter 인 터 페 이 스 를 실현 하여 doFilter(ServletRequest arg 0,ServletResponse arg 1,FilterChain arg 2)방법 을 덮어 쓰 고 차단 또는 실행 을 결정 합 니 다.
public class Test1Filter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request=(HttpServletRequest)arg0;
System.out.println(" filter1 , url:"+request.getRequestURI());
arg2.doFilter(arg0,arg1);
}
}
public class Test2Filter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request=(HttpServletRequest)arg0;
System.out.println(" filter2 , url:"+request.getRequestURI());
arg2.doFilter(arg0,arg1);
}
}
springboot configuration 에 서로 다른 FilterRegistration Bean 인 스 턴 스 를 설정 하여 사용자 정의 필 터 를 등록 합 니 다.configuration 클래스 를 만 듭 니 다.
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.example.demo.filter.Test1Filter;
import com.example.demo.filter.Test2Filter;
@Configuration
public class DemoConfiguration {
@Bean
public FilterRegistrationBean<Test1Filter> RegistTest1(){
// FilterRegistrationBean
// @WebFilter
FilterRegistrationBean<Test1Filter> bean = new FilterRegistrationBean<Test1Filter>();
bean.setFilter(new Test1Filter());//
bean.setName("flilter1");//
bean.addUrlPatterns("/*");//
bean.setOrder(1);// ,
return bean;
}
@Bean
public FilterRegistrationBean<Test2Filter> RegistTest2(){
// FilterRegistrationBean
// @WebFilter
FilterRegistrationBean<Test2Filter> bean = new FilterRegistrationBean<Test2Filter>();
bean.setFilter(new Test2Filter());//
bean.setName("flilter2");//
bean.addUrlPatterns("/test/*");//
bean.setOrder(6);// ,
return bean;
}
}
그 속1.첫 번 째 bean 은 모든 경 로 를 차단 하고 두 번 째 는/test/*경로 만 차단 합 니 다.
2 첫 번 째 bean 우선 순 위 는 1 이 고 두 번 째 는 6 이 설정 되 어 있 습 니 다.낮 을 수록 우선 하기 때문에 필터 1 은 필터 2 앞에서 차단 해 야 합 니 다.
springboot 을 실행 합 니 다.방문/test/*다음 그림 을 요청 합 니 다.다음 그림 에서 필터 1 만 차단 하고 필터 2 경로 가 일치 하지 않 습 니 다.
만약.addUrlPatterns()를중간 차단 경 로 를 같은/test/*로 바 꾸 면 모든 요청 이 2 개의 필 터 를 터치 하고 필터 1 은 항상 가장 먼저 차단 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.