Причиной этой проблемы является то, что фильтр url-pattern
явно слишком общий, например /*
или, может быть, *.jsp
. Он будет выполняться для каждого запроса JSP.
В фильтре вы отправляете перенаправление на login.jsp
, когда зарегистрированный пользователь отсутствует. Перенаправление будет указывать клиенту запустить новый HTTP-запрос. Новый HTTP-запрос снова вызовет фильтр, когда URL-адрес запроса совпадет с url-pattern
. Поскольку зарегистрированный пользователь все еще отсутствует, он входит в бесконечный цикл перенаправления.
Помимо определения URL-адреса запроса (как вы это сделали), вы также можете просто разместить защищенные страницы на более конкретном url-pattern
, например. /secured/*
, /private/*
или около того, а затем поместите туда защищенные страницы, а страницу входа - нет. Если вы перенаправите на страницу входа, фильтр больше не будет вызываться.