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

Egy alapértelmezett szervletleképezés csak a / karaktert leképezését tartalmazza. A versenytársak alkalmazáskiszolgálóin a javax.servlet.http.HttpServletRequest.getServletPath metódus meghívása egy alapértelmezett szervletleképezéshez a kérés URI értékét a kontextus útvonal nélkül adja vissza, és a javax.servlet.http.HttpServletRequest.getPathInfo metódus 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, és 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, és a getPathInfo metódus meghívása a / karaktert adja 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 versenytársak alkalmazáskiszolgálóin ennek a kódnak a kimenete a következő lesz:

< span class="Code"> getServletPath: /some/path/to/kisalkalmazás
getPathInfo: null

Azonban 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: /

Ha WebSphere Liberty kiszolgálóra tér át és a Servlet 3.0 vagy 3.1 megvalósítást használja, akkor adj hozzá a <webContainer servletPathForDefaultMapping="true"/> elemet a server.xml konfigurációs fájlhoz. Ennek az elemnek a hozzáadása azt eredményezi, hogy a getServletPath és a getPathInfo metódus úgy viselkedik, mint a versenytársak alkalmazáskiszolgálóin. Ha a Servlet 4.0 megvalósítást használja, akkor nincs szükség módosításra. A getServletPath és a getPathInfo metódus a Servlet 4.0 megvalósításban ugyanúgy viselkedik, mint a versenytársak alkalmazáskiszolgálóin.

Ha hagyományos WebSphere alkalmazáskiszolgálóra tér át, akkor állítsa be a WebContainer com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements tulajdonságot true értékre. Ennek a tulajdonságnak a beállítása azt eredményezi, hogy a getServletPath és a getPathInfo metódus úgy viselkedik, mint a versenytársak alkalmazáskiszolgálóin.

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