Шаблон URL-адреса сопоставления фильтров, исключающий подкаталоги

Есть ли способ сделать так, чтобы отображение фильтров не включало подкаталоги?

Например.

У меня есть. xhtml в моем корневом контексте, и у меня также есть подпапка с именем «test» с файлами с таким же расширением. Можно ли сопоставить фильтр с файлами в корневом контексте, а не с файлами в каталоге "test"?

7
задан BalusC 12 August 2010 в 16:15
поделиться

3 ответа

Шаблон URL действительно ограничивает сопоставление. Допускается только точное совпадение, префикс или суффикс. Не соответствует среднему / общему / регулярному выражению. Так, например, / *. Xhtml то, что вы собираетесь делать, не сработает.

Если вы хотите исключить XHTML только из папки / test , то лучшим вариантом будет Фильтр , прослушивающий URL-шаблон из ] *. xhtml , который в основном выполняет следующую работу в методе doFilter () :

// First cast ServletRequest to HttpServletRequest.
HttpServletRequest hsr = (HttpServletRequest) request;

// Check if requested resource is not in /test folder.
if (!hsr.getServletPath().startsWith("/test/")) {
    // Not in /test folder. Do your thing here.
}

HttpServletRequest # getServletPath () в основном возвращает часть URI запроса из контекстный путь включен.

При необходимости вы можете настроить значение / test как фильтра, чтобы вы могли управлять значением изнутри web.xml вместо кода фильтра.

18
ответ дан 6 December 2019 в 09:17
поделиться

Используя то, что доступно для стандартных сервлетов / фильтров, нет прямого способа исключить подкаталог, поскольку сопоставления стиля *. Ext включают подкаталоги. Вы можете обойти это, объявив другой фильтр, который специально обрабатывает отображение / test / *. Xhtml и обрабатывает его соответственно.

0
ответ дан 6 December 2019 в 09:17
поделиться

Некоторые контейнеры (например, смола) определяют расширение для определения сопоставления фильтров в web.xml, которое позволяет указать url-regexp , что позволяет сопоставить URL-адреса на основе регулярного выражения. ( ссылка ). Посмотрите, есть ли в вашем контейнере что-то подобное.

-1
ответ дан 6 December 2019 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: