Вы не можете решить это. Вы не можете контролировать, будет ли клиент нажимать клавишу Esc, или поспешно щелкнет другую ссылку, или закроет браузер, или произойдет сбой его машины, и так далее, пока ваш сервер все еще обрабатывает запрос / ответ HTTP.
Вы можете «спрятать» его с помощью глобального фильтра (сопоставленного с /*
), который делает что-то вроде этого:
try {
chain.doFilter(request, response);
}
catch (ClientAbortException e) {
// Ignore.
}
Это, однако, приводит к зависимости вашего сервлетконтейнера от кода. Рассматриваемый фильтр может привести к NoClassDefFoundError
на контейнере сервлетов другой марки, который не использует Tomcat ClientAbortException
. Вы можете вместо этого проверить простое имя класса. Воспользуйтесь тем преимуществом, что это подкласс IOException
:
try {
chain.doFilter(request, response);
}
catch (IOException e) {
if (!e.getClass().getSimpleName().equals("ClientAbortException")) {
throw e;
}
}