Ricerca una modifica al comportamento nei metodi getServletPath e getPathInfo

Un'associazione servlet predefinita ha un'associazione solo del carattere /. Nei server delle applicazioni della concorrenza, una chiamata al metodo javax.servlet.http.HttpServletRequest.getServletPath per un'associazione servlet predefinita restituisce il valore dell'URI della richiesta meno il percorso del contesto ed una chiamata al metodo javax.servlet.http.HttpServletRequest.getPathInfo restituisce null. In WebSphere tradizionale, una chiamata a getServletPath per un'associazione servlet predefinita restituirà una stringa vuota ed una chiamata al metodo getPathInfo restituisce il carattere /. Allo stesso modo, se si sta eseguendo la migrazione a Liberty e si utilizzano le implementazioni della funzione Servlet 3.0 o 3.1, una chiamata a getServletPath per un'associazione servlet predefinita restituirà una stringa vuota ed una chiamata al metodo getPathInfo restituisce il carattere /.

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

Nei server delle applicazioni della concorrenza, questo codice avrà il seguente output:

< span class="Code"> getServletPercorso: /some/path/to/servlet
getPathInfo: null

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

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

Se si sta eseguendo la migrazione a WebSphere Liberty e si utilizzano le implementazioni Servlet 3.0 o 3.1, aggiungere l'elemento <webContainer servletPathForDefaultMapping="true"/> al file di configurazione server.xml. Aggiungendo tale elemento, i metodi getServletPath e getPathInfo si comportano come nei server delle applicazioni della concorrenza. Se si utilizza l'implementazione Servlet 4.0, non è necessaria alcuna modifica. getServletPath e getPathInfo nell'implementazione Servlet 4.0 si comportano come nei server delle applicazioni della concorrenza.

Se si sta eseguendo la migrazione a WebSphere tradizionale, impostare la proprietà WebContainer com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements su true. Impostando tale proprietà, i metodi getServletPath e getPathInfo si comportano come nei server delle applicazioni della concorrenza.

Per ulteriori informazioni, consultare: