Décomposons l'URL complète qu'un client saisirait dans sa barre d'adresse pour accéder à votre servlet :
http://www.example.com:80/awesome-application/path/to/servlet/path/info?a=1&b=2#boo
Les pièces sont les suivantes
- Le régime de l'assurance maladie est un régime d'assurance maladie :
http
- nom d'hôte :
www.example.com
- port :
80
- chemin d'accès au contexte :
awesome-application
- chemin d'accès au servlet :
path/to/servlet
- info sur le chemin :
path/info
- demande :
a=1&b=2
- fragment :
boo
L'URI de la demande (renvoyé par [getRequestURI](http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()) ) correspond aux parties 4, 5 et 6.
(d'ailleurs, même si vous ne le demandez pas, la méthode [getRequestURL](http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRequestURL()) vous donnerait les parties 1, 2, 3, 4, 5 et 6).
Aujourd'hui :
- la partie 4 (le chemin d'accès au contexte) est utilisée pour sélectionner votre application particulière parmi les nombreuses autres applications qui peuvent être en cours d'exécution sur le serveur
- la partie 5 (le chemin du servlet) est utilisée pour sélectionner un servlet particulier parmi de nombreux autres servlets qui peuvent être regroupés dans le WAR de votre application.
- la partie 6 (l'information sur le chemin) est interprétée par la logique de votre servlet (par exemple, elle peut pointer vers une ressource contrôlée par votre servlet).
- la partie 7 (la requête) est également mise à la disposition de votre servlet à l'aide de la fonction getQueryString
- la partie 8 (le fragment) n'est même pas envoyée au serveur et n'est pertinente et connue que du client
La règle suivante s'applique toujours (à l'exception des différences d'encodage des URL) :
requestURI = contextPath + servletPath + pathInfo
L'exemple suivant, tiré du Spécification Servlet 3.0 est très utile :
Remarque : l'image qui suit, je n'ai pas le temps de la recréer en HTML :
2 votes
Vous pouvez trouver cette réponse utile également.
0 votes
@BalusC : merci, j'ai déjà utilisé quelques conseils de cette réponse.
0 votes
Ce document explique la différence à l'aide d'un joli diagramme : agiletribe.wordpress.com/2016/02/23/