필터는 HTTP 요청, 응답 및 헤더 정보를 변환하는 데 사용할 수있는 재사용 가능한 코드 스 니펫입니다. 필터는 서블릿과 같지 않습니다. 요청이나 응답을 생성 할 수 없습니다. 특정 리소스에 대한 요청을 수정하거나 특정 리소스의 응답을 수정합니다.
최근 스크립팅을 사용할 때 쿠키를 사용하여 컴퓨터를 식별하고 필터링을 추가했으며 신중하게 서블릿과 필터를 연구했습니다. 주요 차이점은 다음과 같습니다.
필터의 수명주기는 일반적으로 다음 세 단계를 거칩니다.
서블릿의 특성은 다음과 같습니다.
초기화
컨테이너가 먼저 필터를로드 할 때 init () 메소드가 호출됩니다. 이 클래스에는이 메소드에서 필터 구성 객체에 대한 참조가 포함되어 있습니다. 초기화 정보가 사용되지 않으므로 필터는 실제로이를 수행 할 필요가 없으며 여기에서는 데모 목적입니다.
필터
필터의 대부분은 여기에 소비됩니다. 도필터 방법은 컨테이너에 의해 호출되며 요청/응답 체인의 서블릿 요청, 서블릿 응답 및 필터 체인 객체에 대한 참조는 동시에 전달됩니다. 그런 다음 필터는 요청을 처리하고, 처리 작업을 체인의 다음 리소스로 전달할 수있는 기회가 있습니다 (필터 체인 객체 참조의 도필터 메소드를 호출하여) 처리 제어가 필터로 돌아올 때 응답을 처리합니다.
파괴
컨테이너는 쓰레기 수집 직전에 Destion () 메소드를 호출하여 필요한 청소 코드를 실행할 수 있습니다.
Chain.dofilter (요청, 응답)와 관련하여 그의 기능은 요청을 필터 체인의 다음 객체로 전달하는 것입니다. 다음은 다음 필터를 말합니다. 필터가 없으면 요청한 리소스입니다. 일반적으로 필터는 하나의 체인이며 Web.xml에는 몇 가지 구성 만 있습니다. 하나씩 연결되었습니다
요청 -> filter1-> filter2-> filter3-> .... -> 요청 자원.
필터는 체인 작업이므로 단일 필터를 처리 할 때는 서플렛으로 점프하여 요청에 응답해야합니다.
체인을 통과하는 경우, 체인 .dofilter (요청, 응답) 메소드는 즉시 가로 채기 된 서블릿으로 점프하여 필터로 돌아갑니다. 체인은 문과 같아서이 문에서 나가이 문에서 돌아갑니다. 호출 필터는 web.xml에서 필터를 구성하는 것이며 인터셉트에 필요한 서블릿과 동일한 URL 패턴을 구성해야합니다.
<!-필터 구성-> <filter> <filter-name> suibianxie </filter-name> <filter-class> com.etoak.filter.myencoding </filter-class> <!-개인 매개 변수를 구성합니다-> <init-param> <param-name> mycode </param-name> gbk </param-val- valu> </filter> <!-차단 순서는 매핑 순서와 관련이 있습니다-> <필터 맵핑> <filter-name> suibianxie </filter-name> <!-이것은 서블릿의 URL 패턴과 일치해야합니다. <!-두 번째 필터를 구성-> <filter> <filter-name> suibianxie2 </filter-name> <filter-class> com.etoak.filter.naming </filter-class> </filter> <filter-mapping> <filter-name> suibianxie2 </filter-name> </serl-pattern> </url-pattern> <Servlet> <Servlet-name> 테스트 </servlet-name> <servlet-class> com.etoak.servlet.test </servlet-class> </servlet> <servlet-mapping> <servlet-name> </servlet-name> <Url-pattern>/servlet/test </url-pattern> </servlet-mapping>
위의 것은 편집자가 소개 한 서블릿과 필터의 차이와 연결입니다. 나는 그것이 모두에게 도움이되기를 바랍니다!