Ricerca una modifica al comportamento nei metodi getServletPath e getPathInfo

Un'associazione servlet predefinita ha un'associazione solo del carattere /. Nelle versioni precedenti di WebSphere, una chiamata al metodo javax.servlet.http.HttpServletRequest.getServletPath per un'associazione servlet predefinita restituisce una stringa vuota ed una chiamata al metodo javax.servlet.http.HttpServletRequest.getPathInfo restituisce il carattere /.

Tuttavia, in Liberty con la funzione Servlet 4.0, una chiamata a getServletPath per un'associazione servlet predefinita restituirà il carattere / ed una chiamata a getPathInfo restituirà null.

Ad esempio, considerare il seguente codice:

< 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());
}
}

In WebSphere tradizionale e Liberty con Servlet 3.0 o 3.1, il codice avrà il seguente output:

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

In Liberty con Servlet 4.0, il codice avrà il seguente output:

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

Per tornare al comportamento precedente quando si utilizza la funzione Servlet 4.0, aggiungere la seguente configurazione al file server.xml: <webContainer servletPathForDefaultMapping="false"/>

Per ulteriori informazioni, consultare: