Если загрузка была отменена, браузер закроет соединение, что приведет к исключению ввода-вывода на стороне сервлета.Например, в Tomcat будет указано «Сброс соединения по пиру», и это ClientAbortException.Другие серверы оборачивают IOException по-другому.Суть в том, чтобы просто перехватить IOException, и вы должны иметь возможность обрабатывать его по своему усмотрению.
Использование длины содержимого ненадежно, поскольку для спецификации HTTP не требуются заголовки длины содержимого для POST - или для GET дляиметь значение.Дело в том, что если вы не уверены, что ваш Javascript XHR устанавливает заголовок явно, этот метод не будет работать.
В качестве альтернативы вы можете рассчитать его самостоятельно и установить его, чтобы убедиться, или, что еще лучше, добавить свой собственный поток символов в конец опубликованных данных в XHR, некоторую уникальную строку символов, например, "jh923k49sk $ 2 #% '. В сервлете отрежьте последние 14 символов входящего сообщения и сравните его со строкой. Если оно совпадает, вы знаете, что оно не было отменено.