Comprobar si hay un cambio de comportamiento en los métodos getServletPath y getPathInfo

Una correlación de servlets predeterminada tiene una correlación únicamente del carácter /. En servidores de aplicaciones competitivos, una llamada al método javax.servlet.http.HttpServletRequest.getServletPath para una correlación de servlet predeterminada devuelve el valor del URI de solicitud menos la vía de acceso de contexto, y una llamada al método javax.servlet.http.HttpServletRequest.getPathInfo devuelve un valor nulo. En WebSphere tradicional, una llamada a getServletPath para una correlación de servlet predeterminada devolverá una serie vacía, y una llamada al método getPathInfo devuelve el carácter /. De forma similar, si está migrando a Liberty y utilizando las implementaciones de la característica Servlet 3.0 o 3.1, una llamada a getServletPath para una correlación de servlet predeterminada devolverá una serie vacía, y una llamada al método getPathInfo devuelve el carácter /.

Por ejemplo, considere el código siguiente:

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

En servidores de aplicaciones competitivos, este código tendrá la salida siguiente:

< span class="Code"> getServletVía de acceso: /some/path/to/servlet
getPathInfo: null

Sin embargo, en WebSphere tradicional y Liberty con Servlet 3.0 o 3.1, el código tendrá la salida siguiente:

< span class="Code"> getServletVía de acceso:
getPathInfo: /

Si está migrando a WebSphere Liberty y utiliza las implementaciones de Servlet 3.0 o 3.1, añada el elemento <webContainer servletPathForDefaultMapping="true"/> al archivo de configuración server.xml. Añadir este elemento hará que los métodos getServletPath y getPathInfo se comporten como lo harían en servidores de aplicaciones competitivos. Si está utilizando la implementación de Servlet 4.0, no es necesario ningún cambio. getServletPath y getPathInfo en la implementación de Servlet 4.0 se comportan de la misma manera que en los servidores de aplicaciones competitivos.

Si está migrando a WebSphere tradicional, establezca la propiedad com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements de WebContainer en true. Establecer esta propiedad hará que los métodos getServletPath y getPathInfo se comporten como lo harían en servidores de aplicaciones competitivos.

Para obtener información adicional, consulte: