Как сопоставить сервлет для получения дополнительной информации о пути с помощью getPathInfo()

StackOverflow https://stackoverflow.com/questions/124685

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня возникла проблема, когда Tomcat обрабатывает дополнительную информацию о пути как часть имени сервлета.Это нарушает множество функций RESTful в нашем веб-приложении (мы используем дополнительную информацию о пути, а не пары ?name = value для ссылок, удобных для поиска).

Раньше он работал корректно, но сломался после добавления явных сопоставлений и удаления Invoker сервлет, который мы ранее использовали для обслуживания наших сервлетов.Например, рассмотрим следующую ссылку:

http://mydomain.com/servlet/MyServlet/param1/param2/param3

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/*

Вам не хватает завершающего символа "/*".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top