java.lang.Исключение IllegalArgumentException:Недопустимый <url-pattern> при отображении сервлета

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

Вопрос

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>workflow.WDispatcher</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*NEXTEVENT*</url-pattern>
</servlet-mapping>

Выше приведен фрагмент из Tomcat's web.xml.Шаблон URL-адреса *NEXTEVENT* при запуске выбрасывает

java.lang.Исключение IllegalArgumentException:Недопустимый <url-pattern> при отображении сервлета

Будем очень признательны, если кто-нибудь сможет намекнуть на ошибку.­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Это было полезно?

Решение

<url-pattern>*NEXTEVENT*</url-pattern>

Шаблон URL недопустим.Оно может либо заканчиваться звездочкой, либо начинаться с единицы (для обозначения сопоставления расширений файлов).

Спецификация шаблона URL-адреса:

  • Строка, начинающаяся с символа ‘/’ и заканчивающаяся символом ‘/*’ Для сопоставления путей используется суффикс.
  • Строка, начинающаяся с префикса ‘*.’, используется в качестве расширения сопоставление.
  • Строка, содержащая только символ ’/’, указывает на сервлет приложения "по умолчанию" .В этом случае путь к сервлету - это запрос URI минус контекстный путь, а информация о пути равна нулю.
  • Все остальные строки используются только для точного совпадения.

См. раздел 12.2 настоящего руководства. Спецификация Java-сервлета Версия 3.1 для получения более подробной информации.

Другие советы

Обходной путь, который может достичь этого, заключается в добавлении фильтра сервлетов для повторной записи URL, напримерпереписать заново СЛЕДУЮЩЕЕ СОБЫТИЕ до /NEXTEVENT/(тот, что перед СЛЕДУЮЩИМ СОБЫТИЕМ)/(тот, что после NEXTEVENT) или что-то подобное.

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