Question

   <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>

Ceci est un extrait de web.xml (en utilisant pour configurer un jboss / tomcat webservice). Il suffit de se demander si le url-pattern en web-resource-collection est par rapport à la url-pattern dans servlet-mapping.

Était-ce utile?

La solution

Le url-pattern utilisé pour sélectionner les contraintes pour une requête donnée ne sont pas par rapport à quoi que ce soit. Les parties intéressantes de la Servlet spec ici sont:

  

SRV.12.8.3 traitement des demandes

     

Lorsqu'un conteneur Servlet reçoit un   demande, il doit utiliser l'algorithme   décrit dans SRV.11.1 pour sélectionner le   contraintes (le cas échéant) définies sur la   url-pattern qui est le meilleur match pour   l'URI de la requête. Si aucune contrainte ne   choisi, le conteneur accepte   la demande. Sinon, le conteneur   détermine si la méthode HTTP   la demande est limitée à la   motif sélectionné. Dans le cas contraire, la   demande doit être acceptée. Autrement,   la demande doit répondre à la   contraintes applicables à la http-method   au url-pattern. Les deux   les règles suivantes doivent être remplies pour   la demande soit acceptée et   expédiés vers le servlet associé.

  

SRV.11.1 Utilisation d'URL Chemins

     

Dès réception d'une demande de client, le conteneur Web détermine l'application Web   auquel de le transmettre. L'application Web sélectionnée doit avoir la plus longue   chemin de contexte qui correspond au début de l'URL de la requête. La partie apparié de l'URL   est le chemin de contexte lors de la cartographie de servlets.

     

Le conteneur Web doit ensuite localiser le servlet pour traiter la demande à l'aide   la procédure de mappage de trajet décrit ci-dessous .

     

Le chemin d'accès utilisé pour la cartographie à un servlet est l'URL de demande de la demande   opposer moins le chemin de contexte et les paramètres de trajet. Le chemin d'URL mapping   règles ci-dessous sont utilisées dans l'ordre. Le premier match réussi est utilisé sans autre   matchs essayé:

     
      
  1. Le conteneur va essayer de trouver une correspondance exacte du chemin de la demande au   chemin du servlet. A sélectionne avec succès le servlet correspondance.
  2.   
  3. Le conteneur va essayer récursive pour correspondre le plus long chemin préfixe. C'est fait   en marchant dans l'arbre de chemin d'un répertoire à la fois, en utilisant le caractère « / » comme   un séparateur de chemin. Le match le plus long détermine le servlet sélectionné.
  4.   
  5. Si le dernier segment dans le chemin d'URL contient une extension (par exemple .jsp), le conteneur de servlet va essayer de correspondre à une servlet que les demandes de poignées pour l'extension.   Une extension est définie comme étant la partie du dernier segment après le dernier ». » Char-   tère.
  6.   
  7. Si aucune des trois précédentes règles ont pour conséquence un match de servlet, le conteneur   essayer de servir le contenu approprié pour la ressource demandée. Si un « défaut »   servlet est défini pour l'application, il sera utilisé.
  8.   
     

SRV.11.2 Spécification de Mappages

     

Dans le descripteur de déploiement d'applications Web, la syntaxe suivante est utilisée pour définir   applications:

     
      
  • Une chaîne commençant par un « / » caractère et se terminant par un suffixe « / * » est utilisé    pour le mappage de chemin d'accès.
  •   
  • Une chaîne commençant par un préfixe « *. » Est utilisé comme carte d'extension.
  •   
  • Une chaîne contenant uniquement le caractère « / » indique le servlet « par défaut » de    L'application. Dans ce cas, le chemin de servlet est l'URI de la requête moins le chemin de contexte et les informations de chemin est nulle.
  •   
  • Toutes les autres chaînes sont utilisées pour les correspondances exactes seulement.
  •   

Autres conseils

Il me logique que le security-constraint / web-ressources collection / url-pattern pas par rapport à la servlet-mapping / url motif , pour la raison suivante: il peut y avoir plusieurs servlet-mapping dans web.xml, auquel cas il ne serait pas clair que servlet-mapping / url -pattern de prendre pour résoudre l'URI relative, ont été l'un. (Juste une supposition - Je ne l'ai pas encore utilisé les contraintes de sécurité dans tomcat).

Non, ils ne sont pas par rapport à l'autre; il n'y a aucun moyen de lier une donnée servlet-mapping sécurité contrainte . Les deux sont appliqués à un modèle d'URL donné, contrainte de sécurité peut également être appliquée uniquement aux méthodes HTTP spécifiques (GET, POST, ...) donc ils sont tout à fait indépendants.

Les deux éléments sont définis et décrits dans la Servlet spécification . Vous pouvez lire des sections SRV.12.8 sur la sécurité, et des détails sur l'élément url-pattern.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top