190 votes

Différence entre / et / * dans le modèle d’url de mappage de servlet

Le code familier :

Ma compréhension est que mappe à .

Qu’en est-il ? Il ne correspond pas bien sûr à racine uniquement. En fait, il acceptera , mais nous rejetons .

Quelqu'un peut-il expliquer comment est `` mappé ?

293voto

BalusC Points 498232

L' /* sur un servlet qui écrase toutes les autres servlets. Quelle que soit la demande vous le feu, il va finir dans cette servlet. L' / ne pas remplacer d'autres servlets (toutefois, elle ne remplace que la servletcontainer est intégré par défaut servlet pour les ressources statiques et les listes de répertoires). Il devient alors le "défaut" de servlet pour toutes les autres demandes qui ne correspond pas au modèle d'URL de l'un de l'autre, a déclaré servlets à l'écoute sur un plan plus spécifique de modèle d'URL. Dans le cas d' *.jsp, le servletcontainer du builtin JspServlet est invoqué, afin de la servlet sur / de ne pas être invoquée.

Généralement, vous souhaitez utiliser /* sur Filter seulement. Il est capable de laisser la demande de continuer à l'une des servlets à l'écoute sur un plan plus spécifique de modèle d'URL en appelant FilterChain#doFilter().

48voto

Candy Chiu Points 1529

J'aimerais ajouter à BalusC de réponse avec les règles de mappage et un exemple.

Les règles de mappage de Servlet 2.5 spécifications:

  1. URL exacte de la carte
  2. Carte générique chemins
  3. Carte des extensions
  4. Carte par défaut de la servlet

Dans notre exemple, il y a trois servlets. / est la valeur par défaut de servlet installé par nous. Tomcat installe deux servlets pour servir jsp et jspx. Donc, à la carte http://host:port/context/hello

  1. Aucune adresse URL exacte de servlets installé, à côté.
  2. Pas de générique chemins de servlets installé, à côté.
  3. Ne correspond pas à toutes les extensions, à côté.
  4. Carte par défaut de la servlet, retour.

À la carte http://host:port/context/hello.jsp

  1. Aucune adresse URL exacte de servlets installé, à côté.
  2. Pas de générique chemins de servlets installé, à côté.
  3. Trouvé extension servlet, retour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X