Переадресация в сервлете вызывает срабатывание фильтра 2 * 2 = 4 раза (дважды, потому что он перемещается назад и вперед при поступлении запроса и получении ответа). Я хотел бы, чтобы он срабатывал только один раз (когда поступает первоначальный запрос) - или, по крайней мере, только дважды.
Вы забыли вернуться после пересылки, в результате чего ваш фильтр продолжил цепочку запросов / ответов.
rd.forward(request, response);
return;
Вызов произвольного метода Java, безусловно, не приведет к внезапному завершению текущего запущенного блока метода и выпадению из него (ожидайте System#exit()
или когда он, конечно, вызывает исключение, но это отдельная история) .
Сессия начата. Я не хочу, чтобы сеанс начинался до тех пор, пока пользователь фактически не был успешно аутентифицирован (т.е. отправил cookie JSESSIONID клиенту).
Это вызвано не фильтром, а скорее всего вашим JSP. Добавьте следующее в начало JSP, чтобы явно отключить неявное создание сеанса с помощью JSP:
<%@page session="false" %>
При необходимости создайте HttpSessionListener
и установите точку останова для метода sessionCreated()
, чтобы определить истинную причину.