У меня много времени занимает около 5 минут, и он будет выводить результат каждую секунду, и я хочу показать прогресс в браузере клиентов.
Вот что я думаю:
Создайте сервлет, и метод doPost вызовет эту функцию и продолжит работу в фоновом режиме, а также запишет вывод в сеанс во время выполнения.
Метод doGet сервлета вернет вывод, который я сохранил в сеансе, и напишет JavaScript на стороне клиента, чтобы получать вывод каждые 5 секунд до конца.
Но при использовании этого метода первый запрос doPost приведет к зависанию клиента, поскольку сервлет не закроет соединение. Я пытаюсь очистить и закрыть принтер, прежде чем вызвать задачу, но соединение все еще открыто.
Хотя я могу установить таймаут в ajax и запустить мой код результата get, но я думаю, что это довольно грязный способ сделать это.
Может быть, я все сделал неправильно.
Обобщить:
То, что я хочу, - это то, что клиентский запрос может вызвать выполнение задачи, и клиент получит прогресс в режиме реального времени.