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

O mapare de servlet implicită are o mapare doar a caracterului /. În ediţiile anterioare WebSphere, 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ă caracterul /.

Dar, în Liberty cu caracteristica Servlet 4.0, un apel la getServletPath pentru o mapare de servlet implicită va întoarce caracterul / şi un apel la getPathInfo va returna null.

De exemplu, luaţi în considerare 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 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

Pentru a reveni la comportamentul anterior la utilizarea caracteristicii Servlet 4.0, adăugaţi următoarea configuraţie la fişierul server.xml: <webContainer servletPathForDefaultMapping ="false"/>

Pentru informaţii suplimentare, vedeţi: