У меня есть сервлет-фильтр, который фильтрует запрос от сервлета.Я не хочу что-то делать по запросу для изображения
FilterChain#doFilter()
не предотвращает попадание запроса в ваш сервлет, если его шаблон URL также соответствует URL запроса.Вы, кажется, думаете, что это так.Таким образом, это неверно.
Если вы не хотите, чтобы запросы на изображения попадали в ваш сервлет, вам необходимо сопоставить сервлет с более конкретным шаблоном URL.Например, /app/*
вместо /*
.Затем вы можете отфильтровать запросы следующим образом:
if (httpServletRequest.getRequestURI().endsWith(".png")) {
chain.doFilter(request, response);
}
else {
request.getRequestDispatcher("/app" + httpServletRequest.getRequestURI()).forward(request, response);
}
Шаблон URL /*
следует использовать не для сервлетов, а только для фильтров.
Кроме того, тип содержимого определяетсязначение по умолчанию уже определено автоматически в зависимости от расширения файла.Я предполагаю, что у вас действительно есть ресурс some.png
, а не ресурс somepng
, так как первоначальное значение аргумента endsWith()
также будет соответствовать.
См. Также: