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:
|
@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:
|
getServletPath: getPathInfo: / |
În Liberty cu Servlet 4.0, codul va avea următoarea ieşire:
|
getServletPath: / 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: