Rechercher un changement de comportement dans les méthodes getServletPath et getPathInfo

Un mappage de servlet par défaut se limite au caractère /. Dans les versions précédentes de WebSphere, un appel à la méthode javax.servlet.http.HttpServletRequest.getServletPath pour un mappage de servlet par défaut renvoyait une chaîne vide et un appel à la méthode javax.servlet.http.HttpServletRequest.getPathInfo renvoyait le caractère /.

Toutefois, dans Liberty avec la fonctionnalité Servlet 4.0, un appel à getServletPath pour un mappage de servlet par défaut renvoie le caractère / et un appel à getPathInfo renvoie null.

Par exemple, considérons le code suivant :

< span class="Code"> @WebServlet("/")
public class TestServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) {
System.out.println("getServletPath: " + req.getServletPath());
System.out.println("getPathInfo: " + req.getPathInfo());
}
}

Dans WebSphere Traditional et Liberty avec Servlet 3.0 ou 3.1, le code produit les résultats suivants :

< span class="Code"> getServletChemin:
getPathInfo: /

Dans Liberty avec Servlet 4.0, le code produit les résultats suivants :

< span class="Code"> getServletChemin: /
getPathInfo: null

Pour revenir au comportement précédent lors de l'utilisation de la fonctionnalité Servlet 4.0, ajoutez la configuration suivante au fichier server.xml : <webContainer servletPathForDefaultMapping="false"/>

Pour plus d'informations, voir :