Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > фильтры и форвард


Автор: Ljusha 16.11.2006, 21:23
в web.xml описана цепочка из пяти фильтров.
В третьем фильтре происходит форвард на другой урл. Всегда ли цепочка отработает до конца ? Когда и из-за чего это может не произайти ? 
Не могу дать объяснения такому факту: после форварда filterChain.doFilter() не вызывается, но цепочка отрабатывает до конца, хотя по идее не должна. Что происходит в это случае ? 

Автор: Ljusha 17.11.2006, 12:00
Цитата

после форварда filterChain.doFilter() не вызывается, но цепочка отрабатывает до конца, хотя по идее не должна. Что происходит в это случае ? 


 smile .. не отрабатывает. управление передается сервлету. 
А что происходит если вызвать doChain() ? Измениться ли что нибудь в последовательности обработки запроса фильтрами ?

Автор: Sherst 17.11.2006, 12:55
Фильтр отображается на конкретный ресурс. FilterChain.doFilter() - используется для вызова следующего фильтра в цепочке, или если фильтр является последним в цепочке то управление передается сервлету который надо фильтровать.

Первые 2 фильтра форвардят на 1 url? Покажи web.xml.

Автор: Sherst 17.11.2006, 13:20
Нужно писать одинаковые ресурсы на которые отображаются фильтры  в одной куче не разрывая другими ресурсами.

Автор: Ljusha 17.11.2006, 13:29
web.xml : 
Код

    <filter>
        <filter-name>FirstFilter</filter-name>
        <filter-class>FirstFilter</filter-class>
    </filter>
    <filter>
        <filter-name>SecondFilter</filter-name>
        <filter-class>SecondFilter</filter-class>
    </filter>
    <filter>
        <filter-name>ThirdFilter</filter-name>
        <filter-class>ThirdFilter</filter-class>
    </filter>
    <filter>
        <filter-name>FouthFilter</filter-name>
        <filter-class>FouthFilter</filter-class>
    </filter>
    <filter>
        <filter-name>FifthFilter</filter-name>
        <filter-class>FifthFilter</filter-class>
    </filter>
   

    <filter-mapping>
        <filter-name>FirstFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SecondFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>ThirdFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>FouthFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>FifthFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>
    


Цитата

Первые 2 фильтра форвардят на 1 url?


форвард происходит только в третьем фильтре

Автор: Ljusha 17.11.2006, 13:45
все понятно, логика прозрачна. всем спасибо.

Автор: Sherst 17.11.2006, 13:54
Пожалуйста smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)