Много url-шаблонов для того же сервлета
Мне нужно сопоставить тот же сервлет на двух разных URL-адресах. Я использовал netbeans 7.0.1 для управления всем моим проектом, поэтому я использовал его дружественный интерфейс для изменения файла web.xml. Создание netbeans:
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>/url</url-pattern>
</servlet-mapping>
Это прочитано tomcat 5.5 без какой-либо ошибки, но работает только второй шаблон, в то время как первый игнорируется.
Googling Я обнаружил, что правильный путь для tomcat:
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>/url</url-pattern>
</servlet-mapping>
Итак, мои вопросы: это ошибка в tomcat? Какой синтаксис принимают другие контейнеры?
Ответы
Ответ 1
Я предполагаю, что это больше связано с параметром сервлета, который использует контейнер /netbeans, а не проблема с контейнером. Ваша сеть beans, похоже, использует спецификацию 2.5 для построения отображения сервлета, и, следовательно, вы получаете
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>/url</url-pattern>
</servlet-mapping>
Подробнее об этом здесь. В нем говорится:
Предыдущие версии схемы сервлетов допускают только один URL-шаблон в фильтра. Для фильтров, сопоставленных с несколькими URL-адресами, это приводит к ненужным повторение целых картографических предложений.
Ответ 2
Контейнер Tomcat будет поддерживать 3 шаблона URL:
- полная последовательность символов
-
/*
-
*.
ext (звездочка означает что-либо)
/*
рекомендуется только для одной рамки
если вы используете несколько фреймворков, тогда рекомендуется .*