Перенаправление фильтра сервлета: как перенаправить после цепочки.doFilter(запрос, соответственно);

#java #servlets #redirect #filter #servlet-filters

#java #сервлеты #перенаправление #Фильтр #сервлет-фильтры

Вопрос:

У меня есть класс фильтра сервлета. Внутри функции doFilter я хотел бы перенаправить на пользовательский URL после цепочки.Вызов doFilter(запрос, ответ).

Теперь я знаю, что я не могу вызвать обе цепочки.doFilter(запрос, ответ) и response.redirect(«www.customURL.com «) вместе. Но идея в том, что браузер перенаправляет на customUrl после завершения цепочки фильтров.

Как это может быть выполнено в функции doFilter моего класса фильтра сервлета (который, очевидно, реализует класс filter).

Спасибо.

Ответ №1:

Короткий ответ: вы не можете.

Несколько более длинный ответ: измените порядок ваших фильтров. Позаботьтесь о том, чтобы все фильтры, которые вы хотите обработать, были добавлены перед вашим перенаправляющим фильтром. Фильтры обрабатываются в порядке их добавления web.xml .

Ответ №2:

Вы можете сделать это, если обернете объект ответа и реализуете любые вызовы, которые явно или неявно фиксируют ответ как NO-OPs . По сути, делая это, вы отбрасываете ответ, сгенерированный цепочкой фильтров.