Modèle d'URL de servlet correspondant à une URL se terminant par une barre oblique (& # 8220; / & # 8221;)
-
19-08-2019 - |
Question
J'aimerais spécifier un modèle d'URL de servlet correspondant à une URL se terminant par une barre oblique ("/") et uniquement une barre oblique.
Je comprends que le motif
/example/path/*
correspondra à une URL de
http://example.com/example/path/
et que cela semble fonctionner. Cependant, ce même modèle correspondrait également aux URL de
http://example.com/example/path/a/ http://example.com/example/path/b/ http://example.com/example/path/c/
Je recherche simplement un modèle d'URL correspondant à http://example.com. / example / path /
uniquement sans que le http: / /example.com/example/path/a/
, etc.
Clarification: un modèle d'URL se terminant par une barre oblique n'est pas autorisé.
La solution
Il est tout à fait possible que vous ne puissiez pas le faire en effectuant un mappage dans web.xml.
Ce que vous pouvez faire est de mapper le servlet à / mypath / *, puis de vérifier la partie après / mypath / via request.getPathInto (). Si c'est "/", lancez votre code. Si ce n’est pas le cas, renvoyer l’erreur 404.
Autres conseils
Dans NetBeans, si je passe à l'onglet Servlets du fichier web.xml, l'EDI se plaindra avec, "Erreur: les modèles d'URL ne peuvent pas se terminer par un slash (/)". Dans la spécification d'URL , il est indiqué ce qui suit:
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
Donc oui, un URI avec une barre oblique de fin n'est pas valide.