| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > ProgressBar и Servlet |
| Автор: SuperOrange 8.7.2009, 16:31 |
| Помогите решить задачу. У меня есть сервлет который читает файл/веб-страницу и обрабатывает содержимое. Иногда это бывают очень большие файл или очень медленные сервера. Необходимо сделать ProgressBar который во время обработки данных будет отображать процесс. Помогите создать кот который во время обработки данных будет показывать этот бар а по завершении его скрывать. Очень важно, очень прошу. P.S. возможно даже это будут разные сервлеты. Обработка и прогрес бар в одном, по окончании обработки вызывается второй сервлет который выведет на экран результат. |
| Автор: garbuz 8.7.2009, 18:02 |
| Может тут лучше javascript подойдет? Примеров, я уверен, полно. Добавлено через 2 минуты и 47 секунд Вот тут пример с использованием jsp http://www.onjava.com/pub/a/onjava/2003/06/11/jsp_progressbars.html |
| Автор: COVD 9.7.2009, 08:55 |
| Ваш сервлет, выполняющий длительное задание, скорее всего сам не может знать наверняка, какой процент работы сделан, потому что это связано с загрузкой данных из интернета. Поэтому проще показывать песочные часы или бесконечный прогресс-бар без указания процентов. А это действительно лучше делать на js. |
| Автор: Samotnik 9.7.2009, 09:01 |
| SuperOrange, очень вам не советую считать время, когда запрос будет обнаружен. Это очень трудно. Лучше всего - перед отправкой запроса просто вывести на экран анимацию прогресс бара (их в нете много найдете |
| Автор: SuperOrange 9.7.2009, 12:36 |
| Хорошо, перефразирую задачу. Допустим у меня есть страница с анимацией прогрес бара. А как мне тогда сделать так, пусть по клику у меня открывается страничка с анимацией, но мне нада ещё в фоне запустит сервлет с обратоткой данных и по их завершению перейти на страничку другова сервлета который и отобразит результат операции. Как в JS я смогу узнать что обработка закончилась? P.S. теоретически я понимаю что данные я могу положить в сессию, но вот как сообщить страничке с анимацией что нада заканчивать ? |
| Автор: garbuz 9.7.2009, 12:46 |
| С сервлета, который выполняет какую-то работу и когда он ее закончит посылаете какой-нибудь флаг на страницу с анимацией, на странице ставите условие, если флаг = тру, тогда редирект на другой сервлет. Ну вот как-то так наверно. |
| Автор: SuperOrange 9.7.2009, 13:04 |
| Не совсем понял вас, у меня например есть страница с анимацией, простая ХТМЛ + JS для анимации, допустим я отображаю её, как мне теперь запустить сервлет обработки и по окончанию обработки перейти на \index.jsp |
| Автор: SuperOrange 9.7.2009, 15:35 | ||
| Голова кипит, не догоняю. Помоги решить, лучше кодом. Есть основная страница: index.jsp в которой вводятся данные, и которая выводит результат обработки этих данных. Вот код формы.
Далее выполняется сервлет URLServlet в котором идёт обработка данных, по окончании обработки снова вызывается index.jsp и в зависимости от параметра под формой выводит обработынные данные. Мне необходимо что бы, после воода данных, загружалась обычная HTML страница (уже есть), на которой будет JavaScript, что то типа "Ожидайте, идёт обработка" пока будет выполнятся URLServlet , и по окончании выполнения URLServlet снова загружатся index.jsp. Суть в том что у меня не получается сделать так что бы пока идёт обработка отображалось "Ожидайте, идёт обработка". Помогите кодом решить проблему. |
| Автор: kez 9.7.2009, 17:26 |
| почему не сделать ажаксом? самое элегантное решение на мой взгляд. и не придется уходить никуда с этой страницы. |
| Автор: SuperOrange 9.7.2009, 19:26 | ||
Нету опыта на AJAX, а те кто его знает, не могут помоч кодом. |
| Автор: DimW 10.7.2009, 14:41 | ||
| SuperOrange, не так давно пришлось изобразить нечно подобное. делал так: 1) на странице ввода данных ставил div в котрый помещал анимированный gif с прогрес-баром, div поумолчанию скрытый т.е. style="display:none;". 2) перед сабмитом формы на сервлет менял стиль у дива на style="display:block;".
|
| Автор: SuperOrange 10.7.2009, 17:03 | ||||
Так, а разве если перед сабмитом сделать display:block; а потом сабмит, я успею увидеть этот блок ? |
| Автор: DimW 13.7.2009, 06:54 | ||
да. |
| Автор: SuperOrange 14.7.2009, 08:22 | ||
| Хорошо, то есть Форму я описываю так ?
Так? |
| Автор: DimW 14.7.2009, 08:59 |
| SuperOrange, понятие не имеею можно ли использовать в action вызов функции, но похоже на правду. я обычно вызовы функций вешаю на onclick кнопке. |
| Автор: SuperOrange 17.7.2009, 09:53 | ||||
Сделал просто
работает только в IE. Почему неработает в опере и фаерфоксе ? |
| Автор: SuperOrange 17.7.2009, 10:52 | ||
Разобрался, для OPERA и FireFox регистр важен. Исправил на
Всё заработало |