2011-07-22 10 views
16

Czy ktoś może mi powiedzieć, co robi DispatcherType?Jetty's DispatcherType (i 1000 innych nieudokumentowanych rzeczy)

Wydaje się być ważną konfiguracją.

Użycie klas też mi nie pomogło, wskazując na takie rzeczy, jak ServletContextHandler#addFilter, które są "udokumentowane" mądrymi słowami: convenience method to add a filter.


Ogólnie jakaś szansa, aby "zrozumieć" nieudokumentowane Jetty API bez kodu przykładowego-search-zabawy lub try-i-nie-i-zastanawiać?

Odpowiedz

13

To także ustawienie w pliku web.xml; i prawdopodobnie istnieje od dłuższego czasu.

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

konfigurowania filtrów do przodu lub obejmować cele

Ta sekcja zawiera kilka przykładowych konfiguracji mieć akt filtra na przód lub obejmować cele. Zaczynamy z deklaracją filtra, a następnie alternatywnych konfiguracji mapowania Filtr:

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

Aby wykonać MyFilter aby filtrować m.in. Target nazwie includedservlet:

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

Należy pamiętać, że include() połączenia mogą pochodzić z dowolnego serwlet (lub inny zasób) w aplikacji. Zauważ też, że MyFilter nie byłby uruchamiany dla bezpośredniego żądania dołączonego serwisu, chyba że masz inny element z wartością ŻĄDANIE.

Aby wykonać MyFilter filtrować żadnych aplet bezpośrednio żądany przez wzorzec URL „/ mojasciezka /” lub wykonać je filtrować dowolny cel do przodu, który jest wykonywany przez wzorzec URL zaczynające się od „/ mojasciezka /”:

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

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

również domyślnie jest wniosek; czytaj metody appliesTo (...) na poniższej stronie:

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

+0

Cóż, muszę się zgodzić, to ma sens, że wniosek jest domyślny;) –

8

Dodawanie do odpowiedzi Asad jest dyspozytor nie jest swoisty pomost, to część specyfikacji serwletów do wersji 2.5. Oto oficjalny opis dla wartości dyspozytorski z 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>