Verificaţi pentru o modificare de comportament în metodele getServletPath şi getPathInfo

O mapare de servlet implicită are o mapare doar a caracterului /. În WebLogic, un apel la metoda javax.servlet.http.HttpServletRequest.getServletPath pentru o mapare de servlet implicită întoarce un şir gol, iar un apel la metoda javax.servlet.http.HttpServletRequest.getPathInfo returnează null.

În WebSphere tradiţional, un apel la getServletPath pentru o mapare de servlet implicită va întoarce un şir gol, dar un apel la getPathInfo va returna caracterul /.

Similar, dacă migraţi la Liberty şi utilizaţi implementările caracteristicii Servlet 3.0 sau 3.1, un apel la getServletPath pentru o mapare de servlet implicită va întoarce un şir gol, dar un apel la getPathInfo va returna caracterul /. Dar, dacă folosiţi caracteristica Servlet 4.0, un apel la getServletPath va întoarce caracterul / şi un apel la getPathInfo va returna null.

De exemplu, să presupunem că avem următorul cod:

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

În WebLogic, acest cod va avea următoarea ieşire:

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

În WebSphere tradiţional şi Liberty cu Servlet 3.0 sau 3.1, codul va avea următoarea ieşire:

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

În Liberty cu Servlet 4.0, codul va avea următoarea ieşire:

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

Dacă migraţi la WebSphere tradiţional sau la Liberty cu implementările Servlet 3.0 sau 3.1, asiguraţi-vă că în codul dumneavoastră se aşteaptă ca getPathInfo să returneze / în loc de null.

Dacă migraţi la la Liberty cu implementarea Servlet 4.0, asiguraţi-vă că în codul dumneavoastră se aşteaptă ca getServletPath să returneze / în loc de un şir gol.

Pentru informaţii suplimentare, vedeţi: