Как сопоставить сервлет для получения дополнительной информации о пути с помощью getPathInfo()
Вопрос
У меня возникла проблема, когда Tomcat обрабатывает дополнительную информацию о пути как часть имени сервлета.Это нарушает множество функций RESTful в нашем веб-приложении (мы используем дополнительную информацию о пути, а не пары ?name = value для ссылок, удобных для поиска).
Раньше он работал корректно, но сломался после добавления явных сопоставлений и удаления Invoker
сервлет, который мы ранее использовали для обслуживания наших сервлетов.Например, рассмотрим следующую ссылку:
MyServlet
раньше вызывался правильно, и "/param1/param2 /param3" был возвращен getPathInfo()
на HttpServletRequest
.
Теперь, похоже, что Tomcat пытается загрузить MyServlet/param1 /param2 /param3 в качестве сервлета:
[23/Сентябрь/2008:16:44:23 -0700] " ПОЛУЧИТЬ /servlet/MyServlet/param1/param2/param3 HTTP/1.0" 404
Вот как они определены и сопоставлены в web.xml, и просто нажмите "http://mydomain.com/servlet/MyServlet" работает нормально.
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
Решение
Вам нужно сопоставить его с /servlet/MyServlet/*
Вам не хватает завершающего символа "/*".