Comment mapper un servlet pour obtenir des informations de chemin supplémentaires avec getPathInfo ()

StackOverflow https://stackoverflow.com/questions/124685

  •  02-07-2019
  •  | 
  •  

Question

Je rencontre un problème où Tomcat traite des informations de chemin supplémentaires dans le nom du servlet. Cela casse de nombreuses fonctionnalités RESTFul dans notre application Web (nous utilisons des informations de chemin supplémentaires plutôt que des paires? Nom = valeur pour les liens conviviaux pour les robots d'exploration).

Cela fonctionnait correctement auparavant, mais il s'est rompu après l'ajout de mappages explicites et la suppression du servlet Invoker que nous utilisions auparavant pour servir nos servlets. Par exemple, considérons le lien suivant:

  

http://mydomain.com/servlet/MyServlet/param1/param2/param2/param3

MyServlet était appelé correctement et "/ param1 / param2 / param3". a été renvoyé par getPathInfo () sur HttpServletRequest .

Maintenant, il semble que Tomcat tente de charger MyServlet / param1 / param2 / param3 en tant que servlet:

  

[23 / sept / 2008: 16: 44: 23-0700] "GET   / servlet / MyServlet / param1 / param2 / param3   HTTP / 1.0 " 404

Voici la façon dont ils sont définis et mappés dans le fichier web.xml, et en appuyant simplement sur " http://mydomain.com/servlet/MyServlet " fonctionne bien.

<servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>MyServlet</servlet-name>
  <url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
Était-ce utile?

La solution

Vous devez le mapper vers / servlet / MyServlet / *

Il vous manque la fin du fichier "/ *".

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