java.lang.Исключение IllegalArgumentException:Недопустимый <url-pattern> при отображении сервлета
-
09-06-2019 - |
Вопрос
<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) или что-то подобное.