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

Výchozí mapování servletu má mapování pouze znaku /. V produktu WebLogic vrátí 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átí hodnotu null.

V produktu WebSphere vrátí volání metody getServletPath kvůli výchozímu mapování servletu prázdný řetězec, ale volání metody getPathInfo vrátí znak /.

Podobně platí, že pokud migrujete na server Liberty a používáte implementace funkce servletu 3.0 nebo 3.1, volání metody getServletPath kvůli výchozímu mapování servletu vrátí prázdný řetězec, ale volání metody getPathInfo vrátí znak /. Pokud však použijete funkci servletu 4.0, volání metody getServletPath vrátí 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 serveru WebLogic bude mít tento kód následující výstup:

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

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

Pokud migrujete na server WebSphere traditional nebo Liberty s implementací servletu 3.0 nebo 3.1, ujistěte se, že váš kód bere v úvahu, že metoda getPathInfo vrátí znak / namísto hodnoty null.

Pokud migrujete na server Liberty s implementací servletu 4.0, ujistěte se, že váš kód bere v úvahu, že metoda getServletPath vrátí znak / namísto prázdného řetězce.

Další informace viz: