FilterChain#doFilter()
продолжает обработку запроса и возвращается только после того, как целевые контроллеры завершили свою работу и ответ был обработан и зафиксирован.
Вы должны не вызывать его, если вы намереваетесь изменить запрос на другой адрес на стороне сервера на RequestDispatcher#forward()
(или если вы хотите, чтобы клиентская сторона отправила новый запрос на HttpServletResponse#sendRedirect()
). Вы должны были заметить это, увидев IllegalStateException: response already committed
в журналах сервера.
Так что, либо удалите его так, чтобы у вас получился только форвард,
request.getRequestDispatcher("/Translate").forward(request, response);
или сделайте его условным
if (someCondition) {
chain.doFilter(request, response);
} else {
request.getRequestDispatcher("/Translate").forward(request, response);
}
Не имеет отношения к конкретному вопросу, если я правильно понимаю / угадаю ваше действительное функциональное требование, вы больше ищете RequestDispatcher#include()
в сервлете /process
. См. Также Как последовательно выполнять несколько сервлетов?