Zkontrolovat změnu chování v metodách getServletPath a getPathInfo

Výchozí mapování servletu má mapování pouze znaku /. V předchozích verzích produktu WebSphere vrátilo volání metody javax.servlet.http.HttpServletRequest.getServletPath kvůli výchozímu mapování servletu prázdný řetězec a volání metody javax.servlet.http.HttpServletRequest.getPathInfo vrátilo znak /.

Na serveru Liberty s funkcí servletu 4.0 však vrátí volání metody getServletPath kvůli výchozímu mapování servletu znak / a volání metody getPathInfo vrátí hodnotu null.

Zvažte například následující kód:

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

Na serverech WebSphere traditional a Liberty se servletem 3.0 nebo 3.1 bude mít kód následující výstup:

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

Na serveru Liberty se servletem 4.0 bude mít kód následující výstup:

< span class="Code"> getServletCesta:/
getPathInfo: null

Chcete-li se vrátit k předchozímu chování, když používáte funkci servletu 4.0, přidejte do souboru server.xml následující konfiguraci: <webContainer servletPathForDefaultMapping="false"/>

Další informace viz: