2016-03-30 4 views
0

У меня есть веб-приложение Java, в котором выполняется сервлет, требующий времени для загрузки, и как только сервлет будет выполнен, страница jsp будет отображаться с данными из сервлета, который запускался раньше.Показывать что-то при загрузке сервлетов

Есть ли способ отображения сообщения или gif во время загрузки сервлета?

+0

Показать свой код, не можете знать, что вы делаете неправильно, если вы его не показываете. –

+0

Дубликат: http://stackoverflow.com/questions/1964839/how-can-i-create-a-please-wait-loading-animation-using-jquery – tak3shi

+0

@ tak3shi: это не дубликат. Другая страница специально посвящена jQuery, когда OP не запрашивает javascript, но для сервлета. –

ответ

0

JavaScript - это путь, Servlet - серверная сторона, которую вы знаете.

До тех пор, пока я знаю, как только браузер отправит запрос, мы не сможем контролировать, что произойдет до загрузки следующей страницы.

Итак, либо вы обрабатываете задержку перед загрузкой новой страницы, либо обрабатываете задержку после загрузки страницы. Конечно, трудно загрузить страницу, требующую аутентификации, до того, как будет выполнена аутентификация, поэтому лучше оставаться на странице входа, пока это не произойдет.

Мое предложение состоит в том, что вы обрабатываете логин с помощью AJAX, всегда заботясь о безопасности. Вместо того, чтобы позволить браузеру отправить форму, ваш JS собирает информацию для входа и асинхронно отправляет на Servlet с помощью AJAX. Я не знаю, как это сделать, но это можно сделать.

Пока ваш JS ждет ответа, вы создаете анимацию, чтобы отвлечь пользователя. Когда появится ответ, если он войдет в систему, ваш JS загрузит новую страницу.

+0

OP не спрашивает, как обращаться с логином. Также нет необходимости использовать Ajax, OP просто хочет отобразить сообщение или gif. – tak3shi

+1

Теперь ясно, что мне нужно изучить javascript. Благодарю вас за понимание, которое вы мне дали. –

0

Если сервлет требует времени, чтобы вернуть результат, его необходимо разбить. Затем вы можете использовать Javascript или перенаправления, а для последнего - с задержками обновления или без них.

Javascript - это более очевидный способ: интеллект - это клиентская сторона. Таким образом, вы:

  • подготовить запрос
  • сообщить пользователю, что вы запускаете обработку, которая займет время
  • отправить запрос асинхронной к серверу
  • [возможно, информировать пользователя о avancement обработки]
  • показать окончательный результат, когда запрос завершен

Но это не единственный способ. Вы можете также:

  • отправить запрос на первый сервлет, который начинается асинхронной обработкой и немедленно возвращает страницу информирования пользователя, что обработка может занять некоторое время
  • страница содержит кнопку улучшению, что запрос для себя и отображение информации о продвижении
  • , когда запрос завершен, страница продвижение перенаправляет на страницу, отображая окончательный результат

Хорошо, это не очень приятно, потому что пользователь должен нажать кнопку, чтобы увидеть продвижение, но вы можете использовать небольшое изменение, используя заголовок обновления на странице продвижения, которая обновляет его автоматически. Обновление является нестандартным тегом, но поддерживается большинством браузеров (ref). И вы получаете страницу, которая информирует пользователя о продвижении долговременной обработки без строки javascript.

Смежные вопросы