O mapare de servlet implicită are o mapare doar a caracterului /. În serverele de aplicaţii competitive, un apel la metoda
javax.servlet.http.HttpServletRequest.getServletPath
pentru o mapare de servlet implicită returnează valoarea URI-ul
cererii minus calea de context, 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, iar 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, iar un apel la getPathInfo va returna caracterul
/.
De exemplu, luaţi în considerare următorul cod:
În serverele de aplicaţii competitive, acest cod va avea următoarea ieşire:
Dar, în WebSphere tradiţional şi Liberty cu Servlet 3.0 sau 3.1, codul va avea următoarea ieşire:
Dacă migraţi la WebSphere Liberty şi utilizaţi implementările
Servlet 3.0 sau 3.1, adăugaţi elementul <webContainer
servletPathForDefaultMapping="true"/> la fişierul de configuraţie server.xml. Adăugarea acestui element va face ca metodele
getServletPath şi getPathInfo să se comporte ca în serverele de aplicaţii competitive.
Dacă utilizaţi implementarea Servlet 4.0, nu este nevoie de nicio implementare. getServletPath
şi getPathInfo în implementarea Servlet 4.0 se comportă la fel ca în serverele de aplicaţii competitive.
Dacă migraţi la WebSphere traditional, setaţi proprietatea WebContainer
com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements la true.
Setarea acestei proprietăţi va face ca metodele getServletPath şi getPathInfo să se comporte la fel ca în serverele de aplicaţii competitive.
Pentru informaţii suplimentare, vedeţi: