У меня есть форма JSP, которая (когда пользователь нажимает кнопку «Отправить») создает экземпляр класса Java и вызывает для него метод. Затем этот метод отправляет запрос (в проприетарном формате) на сервер, работающий на совершенно другом компьютере. Затем этот внутренний сервер либо отправляет отправившему пользователю электронное письмо и возвращает «УСПЕХ» методу Java, либо возвращает сообщение об ошибке.
Как только метод Java возвращается из вызова программы на другом поле, он передает результат JSP, который либо говорит пользователю ожидать сообщения электронной почты, либо отображает полученное сообщение об ошибке.
Проблема в том, что для этого нужно время. И по мере того, как внутренний сервер развивался и становился все более сложным (теперь он должен вызывать веб-службу, работающую на облачном сервере), время отклика стало больше.
И теперь у нас есть пользователи, которые из-за отсутствия немедленной обратной связи либо повторно нажимают кнопку отправки, либо обновляют страницу.
Есть ли способ дать пользователю какую-то немедленную обратную связь, как только JSP начнет обрабатывать «отправить», который будет отправлен до того, как начнется вся цепочка инстанцирования, вызова метода, удаленного системного вызова и т. д. ?
Комментарий, указывающий на существование "out.flush()", даже язвительный и саркастический, был бы полезен. И если бы это было дано как ответ, а не как комментарий, его, вероятно, приняли бы как ответ.
Я сам нашел что-то, что будет достаточно хорошо:. Я могу выполнить "out.println()", за которым следует "out.flush", и это даст немедленную обратную связь. Быстрый и грязный тест доказывает это. И тот факт, что я еще не знал об этом, показывает, насколько мало я знаю о JSP (хотя я замечу, что это никогда не упоминалось в первом найденном мной учебнике по JSP, и только после того, как я посмотрел другие учебники, которые Я даже знал о его существовании).
Но я бы приветствовал лучшее решение.
Так же, как я всегда приветствую конструктивный критику.
Есть много способов, включая AJAX и Javascript на клиенте, но ваш вопрос слишком широк для этого сайта. Пожалуйста, возьмите тур, посетите центр помощи и прочитайте Как спросить, чтобы узнать, как эффективно использовать этот сайт.