DispatcherType Jetty (и 1000 других недокументированных вещей) - PullRequest
18 голосов
/ 22 июля 2011

Может кто-нибудь сказать мне, что делает DispatcherType ?

Кажется, что важная конфигурация.

Использование класса также не помогло мне, указав натакие вещи, как ServletContextHandler # addFilter , который «документирован» мудрыми словами: convenience method to add a filter.


В общем, любой шанс «понять» недокументирован Jetty API без code-example-search-fun или try-and-fail-and-wonder ?

Ответы [ 2 ]

14 голосов
/ 27 июля 2011

Это также настройка в web.xml;и, вероятно, существует уже довольно давно.

http://download.oracle.com/docs/cd/B32110_01/web.1013/b28959/filters.htm#BCFIEDGB

Настройка фильтров для целей пересылки или включения

В этом разделе приведено несколько примеров конфигураций, позволяющих фильтровать акты пересылки или включения целей.Мы начнем с объявления фильтра, за которым следуют альтернативные конфигурации сопоставления фильтров:

<filter>
    <filter-name>myfilter</filter-name>
    <filter-class>mypackage.MyFilter</filter-class>
</filter>

Чтобы выполнить MyFilter для фильтрации включаемого целевого объекта с именем includeservlet:

<filter-mapping>
   <filter-name>myfilter</filter-name>
   <servlet-name>includedservlet</servlet-name>
   <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

Обратите внимание, что вызов include ()может прийти из любого сервлета (или другого ресурса) в приложении.Также обратите внимание, что MyFilter не будет выполняться для прямого запроса включенного сервлета, если у вас нет другого элемента со значением REQUEST.

Чтобы выполнить MyFilter для фильтрации любого сервлета, напрямую запрошенного через шаблон URL "/ mypath /", иливыполнить его, чтобы отфильтровать любую прямую цель, которая вызывается через шаблон URL, начинающийся с "/ mypath /":

<filter-mapping>
   <filter-name>myfilter</filter-name>
   <url-pattern>/mypath/*</url-pattern>
   <dispatcher>FORWARD</dispatcher>
   <dispatcher>REQUEST</dispatcher>
</filter-mapping>

~~~~~~~~~~~~~~~~~~~~~~

Также по умолчанию используется Запрос;прочитайте метод applyTo (...) на следующей странице:

http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.jetty/jetty-servlet/8.0.0.M0/org/eclipse/jetty/servlet/FilterMapping.java#FilterMapping.0_dispatches

10 голосов
/ 04 февраля 2014

Если добавить к ответу Асада, диспетчер не специфичен для Jetty, это часть спецификации сервлета до версии 2.5. Вот официальное описание значений диспетчера от web-app_2_5.xsd :

<xsd:complexType name="dispatcherType">
    <xsd:annotation>
        <xsd:documentation>

The dispatcher has four legal values: FORWARD, REQUEST, INCLUDE,
and ERROR. A value of FORWARD means the Filter will be applied
under RequestDispatcher.forward() calls.  A value of REQUEST
means the Filter will be applied under ordinary client calls to
the path or servlet. A value of INCLUDE means the Filter will be
applied under RequestDispatcher.include() calls.  A value of
ERROR means the Filter will be applied under the error page
mechanism.  The absence of any dispatcher elements in a
filter-mapping indicates a default of applying filters only under
ordinary client calls to the path or servlet.

        </xsd:documentation>
    </xsd:annotation>

    <xsd:simpleContent>
        <xsd:restriction base="javaee:string">
            <xsd:enumeration value="FORWARD"/>
            <xsd:enumeration value="INCLUDE"/>
            <xsd:enumeration value="REQUEST"/>
            <xsd:enumeration value="ERROR"/>
        </xsd:restriction>
    </xsd:simpleContent>
</xsd:complexType>
...