Ellenőrizze a getServletPath és getPathInfo metódusok viselkedésváltozását

Egy alapértelmezett szervletleképezés csak a / karakter leképezését tartalmazza. A WebSphere, korábbi változataiban a javax.servlet.http.HttpServletRequest.getServletPath metódus meghívása az alapértelmezett szervletleképezéshez egy üres karaktersorozatot ad vissza, és a javax.servlet.http.HttpServletRequest.getPathInfo metódus meghívása a / karaktert adja vissza.

Azonban a Servlet 4.0 szolgáltatást használó Liberty kiszolgálón a getServletPath meghívása egy alapértelmezett szervletleképezéshez a / karaktert fogja visszaadni, és a getPathInfo meghívása null értéket fog visszaadni.

Például figyelje meg a következő kódot:

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

A Servlet 3.0 vagy 3.1 változatot futtató hagyományos WebSphere és Liberty kiszolgálókon a kód kimenete a következő lesz:

class="Code"> getServletútvonal:
getPathInfo: /

Servlet 4.0 változatot futtató Liberty kiszolgálón a kód kimenete a következő lesz:

class="Code"> getServletútvonal: /
getPathInfo: null

A korábbi viselkedéshez való visszatéréshez a Servlet 4.0 szolgáltatás esetén, adja hozzá a következő konfigurációt a server.xml fájlhoz: <webContainer servletPathForDefaultMapping="false"/>

További információkért tekintse meg az alábbi leírásokat: