2011-07-22 13 views
16

¿Puede alguien decirme qué está haciendo DispatcherType?Jetty's DispatcherType (y otras 1000 cosas no documentadas)

Parece ser una configuración importante.

El uso de clases tampoco me ayudó apuntando a cosas como ServletContextHandler#addFilter, que está "documentada" con las palabras sabias: convenience method to add a filter.


En general, cualquier oportunidad de "comprender" la indocumentado embarcadero API sin código ejemplo de búsqueda de diversión o intentar-y-dejar-y-Wonder?

Respuesta

13

Esta también es una configuración en web.xml; y probablemente haya existido por bastante tiempo.

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

Filtros Configuración para adelante o incluir objetivos

Esta sección proporciona unos pocos ejemplos de configuraciones de tener un acto filtro en adelante o incluir objetivos. Comenzamos con la declaración de filtro, seguido de configuraciones alternativas de asignación de filtro:

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

Para ejecutar myFilter para filtrar un include objetivo includedservlet llamado:

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

Tenga en cuenta que la incluyen llamadas() puede venir de cualquier servlet (u otro recurso) en la aplicación. También tenga en cuenta que MyFilter no se ejecutará para una solicitud directa de servlet incluido, a menos que tenga otro elemento con el valor REQUEST.

Para ejecutar myFilter para filtrar cualquier servlet solicitado directamente a través de un patrón de URL "/ miruta /", o para ejecutarlo para filtrar cualquier destino de desvío que se invoca a través de un patrón de URL que comienza con "/ miruta /":

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

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

Además, el valor predeterminado es la solicitud; leer método AppliesTo (...) en la página siguiente:

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

Bien, estoy de acuerdo, hace que tiene sentido, que la solicitud es por defecto;) –

8

Agregando a la respuesta de Asad, el despachador no está espigón específica, que es parte de la especificación servlet hasta la versión 2.5. Aquí es el de la descripción oficial de los valores despachador de 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> 
Cuestiones relacionadas