Проблема с отображением фильтра - PullRequest
0 голосов
/ 19 декабря 2011

Я использую некоторое сопоставление фильтров для своего проекта. Следующие паттерны фильтра попали в фильтр

<filter-mapping>
       <filter-name>wygUserCheckFilter</filter-name>
       <url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter-mapping>
       <filter-name>wygUserCheckFilter</filter-name>
       <url-pattern>/myProject/MyDisplay.jsp</url-pattern>
</filter-mapping>

Но тот, что ниже, не попадает в фильтр

<filter-mapping>
       <filter-name>wygUserCheckFilter</filter-name>
       <url-pattern>/myProject/*.jsp</url-pattern>
</filter-mapping>

Почему это так?

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

Потому что * в середине шаблона соответствует только символу *.Только соответствующий URL для /myProject/*.jsp-pattern - это точно такая же строка.* имеет особое значение только в следующих случаях (спецификация сервлета 2.4):

  • Строка, начинающаяся с символа '/' и заканчивающаяся суффиксом '/ *', используется для путиотображение.
  • Строка, начинающаяся с '*.'Префикс используется как отображение расширения.
  • Строка, содержащая только символ '/', указывает сервлет приложения по умолчанию.В этом случае путь сервлета является URI запроса минус контекстный путь, а информация о пути равна нулю.
  • Все остальные строки используются только для точных совпадений.
2 голосов
/ 19 декабря 2011

От Servlet 2.5 spec:

SRV.11.2

Спецификация отображений

В развертывании веб-приложения дескриптор, следующий синтаксис используется для определения отображений:

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