Odwzorowanie domyślnego serwletu uwzględnia jedynie odwzorowanie znaku /. W przypadku konkurencyjnych serwerów aplikacji wywołanie metody
javax.servlet.http.HttpServletRequest.getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca wartość identyfikatora URI żądania bez ścieżki kontekstu, a
wywołanie metody javax.servlet.http.HttpServletRequest.getPathInfo zwraca wartość NULL.
W przypadku serwera WebSphere traditional wywołanie metody getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca pusty łańcuch, a wywołanie metody
getPathInfo zwraca znak /.
Podobnie w przypadku migracji na serwer Liberty oraz w przypadku korzystania z implementacji składnika Servlet w wersji 3.0 lub 3.1 wywołanie metody
getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca pusty łańcuch, a wywołanie metody getPathInfo zwraca znak /.
Przykładowy kod do rozpatrzenia:
Na konkurencyjnych serwerach aplikacji ten kod zwróci następujące dane wyjściowe:
Jednak na serwerach WebSphere traditional i Liberty ze składnikiem Servlet w wersji 3.0 lub 3.1 kod zwróci następujące dane wyjściowe:
W przypadku migracji na serwer WebSphere Liberty oraz w przypadku korzystania z implementacji składnika Servlet w wersji 3.0 lub 3.1 należy dodać element
<webContainer servletPathForDefaultMapping="true"/> do pliku konfiguracyjnego server.xml. Dodanie tego elementu spowoduje to, że
metody getServletPath i getPathInfo będą działać tak, jakby były wywoływane na konkurencyjnych serwerach aplikacji.
W przypadku korzystania z
implementacji składnika Servlet 4.0 nie trzeba nic zmieniać. Metody getServletPath i getPathInfo w implementacji składnika Servlet 4.0 działają tak samo
jak na konkurencyjnych serwerach aplikacji.
W przypadku migracji na serwer WebSphere traditional należy ustawić łańcuch true (prawda) jako wartość właściwości kontenera WWW
com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements.
Ustawienie tej właściwości spowoduje, że metody getServletPath i
getPathInfo będą działać tak, jak na konkurencyjnych serwerach aplikacji.
Informacje dodatkowe: