Que se passe-t-il si j’ai deux mappages de servlets dans web.xml qui correspondent à une demande?

Que se passe-t-il si j’ai deux mappages de servlets dans web.xml qui correspondent à une demande? Est-ce qu’il choisit le plus spécifique?

Par exemple, si j’ai le code XML suivant et qu’une requête arrive à …. / quelque chose alors qu’elle va à quelque chose servlet ou quelque chose servel servlet

 something /something   everything_else /*  

Le premier match réussi sera utilisé.

Certaines règles de mappage sont suivies par le conteneur de servlet. Lisez le chapitre SRV.11 de la spécification Servlet 2.5:

Le chemin utilisé pour le mappage sur un servlet est l’URL de demande de l’object de demande, moins le chemin de contexte et les parameters de chemin. Les règles de mappage de chemin d’URL ci-dessous sont utilisées dans l’ordre. La première correspondance réussie est utilisée sans autre tentative de correspondance:

  1. Le conteneur essaiera de trouver une correspondance exacte du chemin de la requête au chemin de la servlet. Une correspondance réussie sélectionne le servlet.
  2. Le conteneur essaiera de manière récursive de faire correspondre le préfixe de chemin le plus long. Ceci est fait en descendant dans l’arbre des chemins un répertoire à la fois, en utilisant le caractère ‘/’ comme séparateur de chemin. La correspondance la plus longue détermine le servlet sélectionné.
  3. Si le dernier segment du chemin de l’URL contient une extension (par exemple, .jsp), le conteneur de servlets tentera de faire correspondre un servlet qui gère les demandes d’extension. Une extension est définie comme la partie du dernier segment après le dernier ‘.’ personnage.
  4. Si aucune des trois règles précédentes ne donne lieu à une correspondance de servlet, le conteneur tentera de fournir le contenu correspondant à la ressource demandée. Si un servlet “par défaut” est défini pour l’application, il sera utilisé.