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. WebLogic kiszolgálón a javax.servlet.http.HttpServletRequest.getServletPath metódus meghívása egy alapértelmezett szervletleképezéshez egy üres karaktersorozatot ad vissza, és a javax.servlet.http.HttpServletRequest.getPathInfo metódus meghívása null értéket ad vissza.

Hagyományos WebSphere alkalmazáskiszolgálón a getServletPath meghívása egy alapértelmezett szervletleképezéshez egy üres karaktersorozatot fog visszaadni, de a getPathInfo metódus meghívása a / karaktert adja vissza.

Hasonlóképpen, ha Liberty kiszolgálóra végzi az átállítást és a Servlet 3.0 vagy 3.1 szolgáltatásmegvalósításokat használja, akkor a getServletPath meghívása egy alapértelmezett szervletleképezéshez üres karaktersorozatot fog visszaadni, azonban a getPathInfo metódus meghívása a / karaktert adja vissza. Ha viszont a Servlet 4.0 szolgáltatást használja, akkor a getServletPath meghívása a / karaktert adja vissza, és a getPathInfo meghívása null értéket ad vissza.

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 WebLogic kiszolgálón ennek a kódnak a kimenete a következő lesz:

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

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

Ha a Servlet 3.0 vagy 3.1 megvalósítást használó hagyományos WebSphere vagy Liberty alkalmazáskiszolgálóra tér át, akkor győződjön meg róla, hogy a kód a getPathInfo a / karakter visszaadását várja, és nem null értékét.

Ha a Servlet 4.0 megvalósítást használó Liberty kiszolgálóra tér át, akkor győződjön meg róla, hogy a kód a getServletPath a / karakter visszaadását várja, és nem egy üres karaktersorozatot.

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