Pregunta

   <servlet-mapping>
      <servlet-name>myName</servlet-name>
      <url-pattern>/aName</url-pattern>
   </servlet-mapping>

    <security-constraint>

            <web-resource-collection>

                    ...

                    <url-pattern>
                            /*
                    </url-pattern>

            </web-resource-collection>

             ...

    </security-constraint>

Este es un extracto de web.xml (usarlo para configurar un jboss / tomcat servicio web). Sólo me preguntaba si el url-pattern en web-resource-collection es relativa a la url-pattern en servlet-mapping.

¿Fue útil?

Solución

El url-pattern utilizado para seleccionar las restricciones para una petición dada no son en relación con cualquier cosa. Las partes interesantes del servlet spec aquí son:

  

SRV.12.8.3 procesamiento de las solicitudes

     

Cuando un contenedor servlet recibe una   solicitud, se deberá utilizar el algoritmo   descrito en SRV.11.1 para seleccionar el   restricciones (si las hay) definidos en el   url-pattern que es el mejor partido de   la URI de la solicitud. Si no hay restricciones son   seleccionado, el contenedor deberá aceptar   la solicitud. De lo contrario el envase   determinará si el método HTTP de   la solicitud está limitada en el   patrón seleccionado. Si no lo es, la   se aceptó la solicitud. De otra manera,   la solicitud debe satisfacer la   restricciones que se aplican a la http-method   en el url-pattern. Ambos de   siguientes reglas deben cumplirse para   que la solicitud sea aceptada y   enviado al servlet asociado.

Y:

  

SRV.11.1 El uso de URL Caminos

     

Una vez recibida la petición del cliente, el contenedor Web determina la aplicación Web   al que lo transmita. La aplicación Web seleccionada debe tener la más larga   ruta de contexto que coincide con el inicio de la URL de solicitud. La parte coincidente de la URL   es la ruta de contexto cuando mapeo para servlets.

     

El contenedor Web siguiente debe localizar el servlet para procesar la solicitud utilizando   el procedimiento de asignación de ruta se describe a continuación .

     

La ruta usada para asignación a un servlet es el URL de solicitud de la solicitud   oponerse menos la ruta de contexto y los parámetros de trayectoria. La asignación de ruta URL   reglas siguientes se usan en orden. La primera persona compatible se utiliza sin más   partidos intentaron:

     
      
  1. El contenedor va a tratar de encontrar una coincidencia exacta de la trayectoria de la solicitud a la   ruta del servlet. Un éxito de los partidos selecciona el servlet.
  2.   
  3. El contenedor de forma recursiva trata de hacer coincidir la más larga trayectoria en el prefijo. Esto esta hecho   pisando el árbol de ruta de un directorio a la vez, utilizando el carácter ‘/’ como   un separador de ruta. El partido más largo determina el servlet seleccionado.
  4.   
  5. Si el último segmento en la ruta URL contiene una extensión (por ejemplo .jsp), el contenedor de servlets trata de hacer coincidir un servlet que se encarga de las solicitudes de la extensión.   Una extensión se define como la parte del último segmento después de la última’.’ Carac-   acter.
  6.   
  7. Si ninguna de las tres reglas anteriores resultan en un partido de servlet, el contenedor   intentará servir a los contenidos apropiados para el recurso solicitado. Si un "defecto"   servlet se define para la aplicación, que será utilizado.
  8.   
     

SRV.11.2 Especificación de Asignaciones

     

En el descriptor de despliegue de aplicaciones Web, la siguiente sintaxis se utiliza para definir   asignaciones:

     
      
  • Se utiliza una cadena que comienza con un carácter ‘/’ y terminando con un sufijo ‘/ *’    para la asignación de ruta.
  •   
  • Una cadena comenzando con un ‘*’. Prefijo se utiliza como una asignación de extensión.
  •   
  • Una cadena que contiene sólo el carácter ‘/’ indica el servlet "default" de    la aplicación. En este caso, la ruta del servlet es la URI de la solicitud menos la ruta de contexto y la información de la ruta es nula.
  •   
  • Todas las demás cadenas se utilizan para coincidencias exactas solamente.
  •   

Otros consejos

No tendría sentido para mí que el security-constraint / web-resource-collection / url-pattern no en relación con el servlet-mapping / url-pattern , por la siguiente razón: no puede haber varios servlet-mapping en web.xml, en cuyo caso no sería claro que servlet-mapping / url -pattern a tomar para resolver el URI relativo, eran uno. (Sólo una conjetura - No he utilizado las restricciones de seguridad en Tomcat aún).

No, no lo son respecto a la otra; no hay manera de enlazar un determinado servlet-mapping a security-constraint . Ambos se aplican a un patrón de URL dado, restricción de seguridad también se puede aplicar sólo a los métodos HTTP específicos (GET, POST, ...) por lo que son bastante independientes.

Ambos elementos se definen y describen en el Servlet especificación . Es posible que desee leer secciones SRV.12.8 por la seguridad, y los detalles sobre el elemento url-pattern.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top