2012-01-24 16 views
28

Necesito asignar el mismo servlet en dos URL diferentes. Utilicé netbeans 7.0.1 para gestionar todo mi proyecto, así que utilicé su amigable interfaz para modificar el archivo web.xml. NetBeans lo creado es la siguiente:muchos url-pattern para el mismo servlet

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

Esta es leído por Tomcat 5.5 sin emitir ningún error, pero sólo funciona el segundo patrón, mientras que el primero se ignora.

buscar en Google me encontré con que el camino correcto para Tomcat es éste:

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

lo tanto, mi pregunta: ¿es una pero en Tomcat? ¿Qué sintaxis aceptan otros contenedores?

Gracias, Giuseppe

Respuesta

39

supongo que tiene más que ver con el servlet spec el contenedor/NetBeans está utilizando en lugar de ser un problema con el contenedor. Sus granos netos parece estar usando la especificación 2.5 para construir la correlación de servlet y por lo tanto se obtiene

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

leer más sobre este here. Se dice

versiones anteriores del esquema servlet permite sólo una única url-pattern en un filtros mapping.For filtro asignadas a varias direcciones URL esto da lugar a la repetición innecesaria de las cláusulas de mapeo enteros.

+0

diría que Tomcat debería al menos dar un error si está utilizando la especificación de edad (2.4) y no acepta la nueva sintaxis. O netbeans debería usar la sintaxis anterior para tener un web.xml compatible. ¿No es así? ¿Los nuevos contenedores aceptan la sintaxis antigua con muchas stanzas de asignación de servlets? – eppesuig

+1

@eppesuig Estoy bastante seguro de que la mayoría de ellos son compatibles con versiones anteriores :) y la especificación de 2.5 servlets XSD ciertamente lo permite. –

+0

@eppesuig Si está satisfecho con la respuesta, puede aceptarla haciendo clic en la marca al lado de la pregunta y/o puede votar la respuesta si esto le ha ayudado de alguna manera. Aceptar respuestas mejorará su reputación en este foro. –

1

contenedor Tomcat apoyará 3 patrones de URL:

  1. carácter completo secuencia
  2. /*
  3. *. ext (estrella significa nada)

/* se recomienda sólo para una sola marco

si utiliza marco múltiple recomendó entonces .*

Cuestiones relacionadas