나는 우리 dofilter 방법에서 내가이 전화를했다는 것을 알고 싶다 chain.doFilter. doFilter가 doFilter에서 수행하는 작업은 무엇입니까? 재귀 호출을받을 수 있습니까?doFilter가 java의 필터에서 doFilter 메서드로 수행하는 작업은 무엇입니까?
답변
서블릿 필터는 Chain of responsibility 디자인 패턴을 구현 한 것입니다.
모든 필터는 web.xml에서 정의 된 순서로 연결됩니다. chain.doFilter()
이 체인의 다음 요소로 진행 중입니다. 체인의 마지막 요소는 대상 자원/서블릿입니다.
chain
개체의 doFilter
메서드를 호출하므로 자체적으로 호출하지 않으므로 재귀 적으로 실행되지 않습니다.
이름이 chain
인 경우 일련의 필터가 있고 각 필터가 처리를 수행하고 다음 순서로 전달되므로 각 개체에 시퀀스의 다음 필터를 가리키는 chain
멤버가있는 것이 좋습니다. 필터가 자체 처리를 수행 한 후에 호출됩니다. 시퀀스의 마지막 부분은 null
이고 값은 chain
이거나 시퀀스 자체의 마지막 부분임을 자체적으로 알고 있습니다.
내부적으로 필터 체인에서 다음 필터의 doFilter
을 호출하고 체인이 끝나면 대상 서블릿을 호출합니다.
chain.doFilter를 호출하면 필터 체인의 다음 필터로 요청/응답을 전달할 수 있습니다. 호출하지 않으면 다음 필터 (아마도 web.xml에 정의되어 있음)가 실행되지 않습니다.
방금 doFilter를 호출했다면 그렇습니다. 무한 재귀와 stackoverflow가 있습니다. 그러나 filterChain 객체의 doFilter 메서드를 호출하면 다음 필터를 실행하도록 지시합니다.
얘기하는 코드를 가지고 있지, 난 단지 추측 할 수 있습니다 뭔가 같은 그 : 그런 경우
class Filter implements FilterAPI {
private FilterAPI chain;
FilterAPI(FilterAPI chain) { this.chain = chain; }
@override void doFilter (Set setToFilter) {
// do some filtering on setToFilter
chain.doFilter(setToFilter);
}
}
, 반복적으로, 당신은 doFilter를 호출 한 다음 호출하지 않는 것을() 다른 개체에. 다른 대답에서 언급했듯이, 이것은 잘 알려진 Chain of Responance 디자인 패턴입니다.
체인의 다음 필터가 호출되도록하거나 호출 필터가 체인의 마지막 필터 인 경우 체인의 끝에있는 자원을 호출하게합니다.
- 1. 루프가 수행하는 작업은 무엇입니까?
- 2. Excel에서 수행하는 작업은 무엇입니까?
- 3. 누가 Java의 필터에서 서비스 롤 메서드를 사용합니까?
- 4. Ruby 함수가 수행하는 작업은 무엇입니까?
- 5. java의 타이머 작업은?
- 6. 필터에서 SOAPFault를 클라이언트로 반환하는 방법은 무엇입니까?
- 7. Linux 커널이 부팅 할 때 수행하는 첫 번째 작업은 무엇입니까?
- 8. 파일 작업과 관련하여 PHP 스트림 컨텍스트가 수행하는 작업은 무엇입니까?
- 9. MySQL 데이터베이스에서 콘텐츠 인코딩을 위해 WordPress가 수행하는 작업은 무엇입니까?
- 10. 이 코드에서 수행하는 편집 및 새로운 작업은 무엇입니까?
- 11. 웹 페이지를 닫을 때 브라우저가 수행하는 작업은 무엇입니까?
- 12. git svn clone에서 --std 레이아웃이 수행하는 작업은 무엇입니까?
- 13. 객체 배열 클래스 정의에서 메서드로 USort()를 수행하는 방법은 무엇입니까?
- 14. 이 작업은 무엇입니까
- 15. TPL의 최대 작업은 무엇입니까?
- 16. Java 1.6에서의 Apt 작업은 무엇입니까?
- 17. 최대 절전 모드 필터에서 session.commit을 사용하는 방법은 무엇입니까?
- 18. 서블릿 필터 : doFilter()에서 소켓을 참조해야합니다.
- 19. 카산드라 : 다시 시작해야하는 작업은 무엇입니까?
- 20. 오라클의 예약 된 작업은 무엇입니까?
- 21. Connection에서 거부 된 작업은 무엇입니까?
- 22. 정적 메서드에서 동기화되는 작업은 무엇입니까?
- 23. 조치 필터에서 Unity 및 asp.net mvc로 속성 주입을 수행하는 방법은 무엇입니까?
- 24. Solr : 필터에서 "LIKE"에 대한 구문은 무엇입니까
- 25. HandleError 필터에서 JSON을 반환하는 방법은 무엇입니까?
- 26. 필터에서 명령 개체에 액세스하는 방법은 무엇입니까?
- 27. Java EE의 필터에서 리디렉션
- 28. 필터에서 DirectorySearcher null 비교
- 29. 필터에서 로그 된 사용자 액세스
- 30. 레이크 작업은
http://java.sun.com/products/servlet/Filters.html – Fortega