Запрос должен обрабатываться одним из нескольких возможных обработчиков, причем отправитель не знает, какой именно. Обработчики связаны друг с другом; каждый либо обрабатывает запрос, либо передает его. Это именно то, что представляют собой фильтры сервлетов, цепочка HandlerInterceptor Spring и большинство конвейеров промежуточного программного обеспечения.