1. 스프링 애플리케이션에서는 필터링을 두 가지 사용하고 하나는 인터셉터이고 다른 하나는 필터입니다. 스프링 부츠에서 필터 사용을 소개합니다. SpringMVC에서 필터 사용은 기본적으로 동일하지만 구성에는 약간의 차이가 있습니다.
2. 필터 기능을 통해 사용자는 요청을 변경하고 응답을 수정할 수 있습니다. 필터는 서블릿이 아니며 응답을 생성 할 수 없습니다. 요청이 서블릿에 도달하기 전에 요청을 전제로 처리하거나 서블릿을 떠날 때 응답을 처리 할 수 있습니다. 다시 말해, 필터는 실제로 "서블릿 체인"(서블릿 체인)입니다.
필터에는 다음이 포함됩니다.
1) 서블릿이 호출되기 전 절편;
2) 서블릿이 호출되기 전에 서블릿 요청을 확인하십시오.
3) 요청 헤더를 수정하고 필요에 따라 요청 데이터를 수정하십시오.
4) 필요에 따라 응답 헤더 및 응답 데이터를 수정합니다.
5) 서블릿이 호출 된 후 차단된다.
1. 필터의 응용 시나리오
필터 필터에 대한 이해를 통해 일부 처리는 다음 세 가지 상황에서 수행 할 수 있음을 알 수 있습니다.
1> chain.dofilter 메소드에 대한 호출을 제어하여 대상 리소스에 액세스 해야하는지 결정하십시오.
예를 들어, 사용자 권한 등을 확인할 수 있습니다. 사용자가 특정 리소스에 액세스 할 수있는 권한이 있는지 확인하고, 릴리스 할 수있는 권한이 있는지 확인하며 허가없이 체인 .dofilter 메소드를 실행하지 않습니다.
2> chain.dofilter 방법을 호출하기 전에 일부 처리를 수행하여 일부 목적을 달성합니다.
예를 들어, 중국어가 달린 코드 등의 문제를 해결하십시오. 도필터 방법 전에 설정 요청 인코딩 및 응답의 인코딩을 수행 할 수 있습니다. 요청 인터페이스를 캡슐화하고 장식하여 GET 요청 메소드의 중국어 문제를 처리 할 수도 있습니다 (해당 요청 .getParameter 메서드를 다시 작성).
3> chain.dofilter 방법을 호출 한 후 일부 처리를 수행하여 일부 목적이 달성됩니다.
예를 들어, 전체 웹 사이트를 압축하십시오. chain.dofilter 메소드를 호출하기 전에 클래스 A로 응답 객체를 캡슐화하고 장식하고 GetOutputStream을 재정의하고 GetWriter 메소드를 재정의하십시오. 클래스 A 내부에서 출력 컨텐츠는 BytearRayoutputStream 스트림으로 캐싱 된 다음 체인 .Dofilter 메소드가 실행 된 후 클래스 A의 ByTearRayoutPutStream 스트림 캐시 데이터가 GzipoutputStream 스트림으로 얻어 압축됩니다.
2. 필터 차단의 원리
필터 인터페이스에는 도필터 방법이 있습니다. 개발자가 필터 클래스를 작성하여 도필터 메소드를 구현하고 인터셉트 할 웹 리소스를 구성하는 경우 웹 서버는 먼저 웹 리소스의 서비스 메소드를 호출하기 전에 필터의 도필터 메소드를 호출합니다 (서버의 내부 액세스 메커니즘에 따라 결정).
3. 필터링 규칙
// 응용 프로그램의 모든 리소스를 필터링합니다. 현재 응용 프로그램의 루트 아래에있는 모든 파일에는 다중 레벨 하위 디렉토리의 모든 파일이 포함됩니다. * * "/"rightration.addurlpatterns ( "/ *")가 있습니다. // 지정된 파일 리소스 유형을 필터링하여 현재 응용 프로그램의 루트 아래에있는 모든 HTML 파일. 참고 : "/"이전 *.html이 없으며, 그렇지 않으면 오류 등록 .addurlpatterns ( ". html"); // 지정된 디렉토리의 모든 파일을 필터링합니다 .addurlPatterns ( "/index.html"); // folder_name 하위 디렉토리 아래의 모든 파일 (현재 응용 프로그램의 루트 아래의 다단계 하위 디렉토리 일 수 있음)의 모든 파일을 필터링합니다. // 지정된 파일 등록을 필터링합니다 .addurlPatterns ( "/index.html");
III. 애플리케이션
@component @servletcomponentscan @webfilter (urlpatterns = "/login/*", filtername = "loginfilter") public class loginfilter 구현 필터 {@override public void init {@override public void init (filterconfig filterconfig) servletexception {public void void void void void retrepons ServletResponse, FilterChain FilterChain) IoException, servleTeXception {} @Override public void destroy () {}}4. 설명 :
1.이 주석 @Component의 목적은 로그 핀 필터를 컨테이너로 넘겨 처리하는 것입니다. 그것은 loginfilter를 작동시키는 것입니다
2. @servletcomponentscan @webfilter를 스캔하여 @webfilter 작업을 수행하는 데 사용됩니다. 물론 서블릿 와이어 튜브를 설명 할 수도 있습니다. 이 @servletcomponentscan은 일반 구성 인 응용 프로그램을 제거하는 것이 가장 좋습니다. 여기에는 필터가 하나 밖에 없으므로 응용 프로그램에 글을 쓰지 않았습니다.
3. @WebFilter는 분명히 사용됩니다. 필터에 어떤 링크가 사용되며 필터 이름이 왜 있습니까?
5. SpringMVC의 필터 사용에 대한 간단한 소개
1. 작문 방법은 여전히 동일합니다. 필터를 상속하여 처리 할 3 가지 방법을 구현합니다.
2. 컨테이너에 던져 : web.xml로 구성되어야합니다.
<filter> <filter-name> loginfilter </filter-name> <filter-class> com.troy.boot.filter.loginfilter </filter-class> </filter> <filter-name> loginfilter </filter-name> <url-pattern>/*</url-pattern> </url-pattern>
3. 당신은 직접 특정 사용법을 연구 할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.