Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Индикация работы метода класса / 25 сообщений из 81, страница 1 из 4
04.11.2021, 17:25
    #40109281
Pcrepair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Добрый день.
Есть следующая ситуация: оператор нажимает на кнопку на странице веб-сайта

Код: html
1.
2.
3.
4.
5.
6.
<div>
    <form action="getmail" class="ui-form" method="post">
        <p><input type="submit" value="Загрузить письма с почтового сервиса"></p>
        <p align="left">${connection}</p>
    </form>
</div>



идет вызов сервлета

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
// get mails from imap-server and write mails to hdd

@WebServlet(urlPatterns = {"/getmail"})
public class GetMail extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
		      ..... много всякого
            int connct = MailImap.getMail(imapserver, login, pass, fullPathToFile, pathToRootDir, loadmails, delmails);
			...... 
			// тут нужен индикатор загрузки писем
            request.setAttribute("connection", "Контроль подключения к серверу: " + connct + " Письмо");
            request.getRequestDispatcher("WEB-INF/operator/operator.jsp").forward(request, response);

        } catch (IOException exc) {
        } catch (ServletException exc) {
    }
}
}



который вызывает метод для загрузки писем с сервера и записи писем в формате мыло.емл на ЖД

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
// receive mails by IMAP protocol + SSL, all works, but google

public class MailImap {

    public static int getMail(String imapHost, String login, String password, String fullPathToFile, String pathToRootDir,
                              boolean recMail, boolean delMail) {
        try {
            /* create properties field */
                 ......
            /* create the IMAP store object and connect with the imap server */
                .......
            /* create the folder object and open it */
			.........
            /* retrieve the messages from the folder in array*/
            mailsCnt = messages.length;

            if (mailsCnt > 0) {

                if (recMail) {
                    /* allow recieve mails */
                    for (Message message : messages) {
                        /*write mails to dir */
                        SaveMailToDir.saveFile(fullPathToFile, fileName, pathToRootDir, fullMail);
                    }
                }
            }
            /* delete ALL mails */
            /* set FLAGs to delete if delMail == true */
            /* close the store and folder objects */
            return mailsCnt;

        } catch (NoSuchProviderException exc) {
        } catch (AuthenticationFailedException exc) {
        } catch (MessagingException exc) {
        } catch (IOException exc) {
        } catch (Exception exc) {
        }
        return -1;
    }
}



записи писем в формате мыло.емл на ЖД

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// write mails to hdd

public class SaveMailToDir {

    public static void saveFile(String fullPathToFile, String filename, String pathToRootDir, InputStream input) {
        try {

        } catch (IOException exc) {
        }
    }
}



Все работает как предначертано

НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)

вопросы:
- можно ли сделать индикацию загрузки писем на веб-странице, просто в виде мигающей строки "Идет загрузка. Ждать!"
- если ДА то как

Заранее спасибо за ответы по ЗАДАННЫМ вопросам
...
Рейтинг: 0 / 0
04.11.2021, 19:15
    #40109305
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair,

это вопрос не сюда - это https://www.sql.ru/forum/html-javascript-css
т.е. к фронту, надеюсь в команде такой есть...
...
Рейтинг: 0 / 0
04.11.2021, 19:31
    #40109309
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair,
типа такого
Код: html
1.
2.
3.
4.
5.
6.
7.
 <div>
    <form action="getmail" class="ui-form" method="post">
        <input type="submit" value="" style="display:none;" id=""yyy"> 
<button onclick="xxx();">Загрузить письма с почтового сервиса</button>
        <p align="left">${connection}</p>
    </form>
</div>


....

Код: javascript
1.
2.
3.
4.
function xxx(){
отображать гифку
document.getElementByID("yyy").click();
}
...
Рейтинг: 0 / 0
04.11.2021, 19:52
    #40109310
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair,
даже если б ты использовал websocket то это
Код: java
1.
// тут нужен индикатор загрузки писем


нужно было бы в другом месте, а именно тут

Код: java
1.
2.
3.
4.
5.
                    for (Message message : messages) {
                        /*write mails to dir */
// тут нужен индикатор загрузки писем
                        SaveMailToDir.saveFile(fullPathToFile, fileName, pathToRootDir, fullMail);
                    }


а так как у тебя ajax - то ответ с сервера ты можешь послать только один на один запрос к серверу.
т.е. только с результатом получения всей почты
...
Рейтинг: 0 / 0
05.11.2021, 09:58
    #40109344
Pcrepair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
вадяа так как у тебя ajax - то ответ с сервера ты можешь послать только один на один запрос к серверу.
т.е. только с результатом получения всей почты

тоесть по простому только жаваскрипт, который будет мигать картинку(или строку) с нажатием кнопки и отключаться как то там еще потом разберусь?

в вебсокеты не лезть

Спасибо.
...
Рейтинг: 0 / 0
05.11.2021, 10:13
    #40109345
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair
НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)

То есть разница в 100 !!! раз и автоматизации не поддается. Наверно зависит от магнитных бурь которые пока не могут предсказать.
Pcrepair
"Идет загрузка. Ждать!"

а другим делами нельзя занимать? ПРИКАЗ тупо ждать от 5 до 500 сек?
Итого ТЗ
- предсказать время получения почты если это возможно
- оформить проверку почты в виде урл на рабочем столе юзверя. Самим юзверем кликая, когда освободится!
- в личном кабинете сделать выбор (извещать СМС, мыло, ....)
...
Рейтинг: 0 / 0
05.11.2021, 10:31
    #40109347
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair
тоесть по простому только жаваскрипт, который будет мигать картинку(или строку) с нажатием кнопки и отключаться как то там еще потом разберусь?
да
а отключать - когда придет ответ от сервера - тогда и отключить гифку
...
Рейтинг: 0 / 0
05.11.2021, 10:42
    #40109349
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Pcrepair
в вебсокеты не лезть

Pcrepair
НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)
вот тут с точки зрения юзера - если гифка крутится больше 15 сек - возникает мысль, а не подвисла ли система...
даже если отображать часики -то все знают , что это только браузер работает, а что там на сервере - хз.

я понимаю, что ws - это страшно, но тогда можно было бы индицировать процесс именно с сервера - т.е. заголовки писем или ещё что.
...
Рейтинг: 0 / 0
05.11.2021, 15:50
    #40109415
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
...
Рейтинг: 0 / 0
05.11.2021, 16:50
    #40109426
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
проблема не в этом, проблема в том как отображать происходящее а сервере в браузере.
...
Рейтинг: 0 / 0
05.11.2021, 16:51
    #40109427
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton,
Оно на сервере.
А клиента не интересуют трудности бэка.
...
Рейтинг: 0 / 0
05.11.2021, 18:50
    #40109452
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
вадя
mayton
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
проблема не в этом, проблема в том как отображать происходящее а сервере в браузере.

Ты-же фул-стекер. Создай веб-сокет. Транслируй прогресс. Мне ли тебя учить?
...
Рейтинг: 0 / 0
05.11.2021, 19:20
    #40109453
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton
Ты-же фул-стекер. Создай веб-сокет. Транслируй прогресс. Мне ли тебя учить?
мне то не проблема, вот только для тс
Pcrepair
в вебсокеты не лезть

а я ему аргУмент
вадя
вот тут с точки зрения юзера - если гифка крутится больше 15 сек - возникает мысль, а не подвисла ли система...
даже если отображать часики -то все знают , что это только браузер работает, а что там на сервере - хз.

я понимаю, что ws - это страшно, но тогда можно было бы индицировать процесс именно с сервера - т.е. заголовки писем или ещё что.
...
Рейтинг: 0 / 0
05.11.2021, 19:21
    #40109454
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
-
...
Рейтинг: 0 / 0
05.11.2021, 20:54
    #40109473
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
...
Рейтинг: 0 / 0
05.11.2021, 21:00
    #40109476
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
там событие отправки и событие пришел ответ
...
Рейтинг: 0 / 0
05.11.2021, 21:03
    #40109477
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
сомет? Long-Polling?
велосипеды...
...
Рейтинг: 0 / 0
05.11.2021, 21:30
    #40109489
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Ну... автор не хочет анимацию типа спиннера. И не хочет веб-сокеты.

Остаётся - просто активный JS который чего-то там будет дергать. Периодически. Не?

P.S. Пятница - прекрасна. Вместо того чтобы идти в пивбар - мы сидим в сорцах.
...
Рейтинг: 0 / 0
05.11.2021, 21:33
    #40109490
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
mayton,
дергать периодически ajax может только в сторону сервера. А автор с глупой постановкой хочет в обратном направлении.
...
Рейтинг: 0 / 0
05.11.2021, 21:41
    #40109492
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
Можно сделать два эндпойнта. На одном запускать проверку почты в отдельном потоке и возвращать клиенту идентификатор задачи. На втором, по идентификатору задачи возвращать прогресс. На клиенте опрашивать второй эндпойнт и отображать прогресс пока не закончится или не случится таймаут. Все тоже самое можно сделать и вебсокетами. Вообще клиентская часть в обоих случаях тривиальная. Основная сложность у топикстартера будет разобраться с многопоточкой на сервере. Это просто, но если никогда не делал, то нужно будет внимательно почитать букварь и сделать.
...
Рейтинг: 0 / 0
05.11.2021, 21:46
    #40109494
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
fixxer,
и потоки не нужны.
Контейнер сам потоки делает.
...
Рейтинг: 0 / 0
05.11.2021, 21:48
    #40109496
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
fixxer
Можно сделать два эндпойнта.
конечно можно, но если рассматривать систему с множеством клиентов, то дергать сервер - не есть хорошо.
...
Рейтинг: 0 / 0
05.11.2021, 21:49
    #40109497
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
PetroNotC Sharp
fixxer,
и потоки не нужны.
Контейнер сам потоки делает.


Контейнер делает потоки для обработки запроса. А тут нужно запустить долгоиграющую задачу и сразу вернуть результат клиенту.
...
Рейтинг: 0 / 0
05.11.2021, 21:49
    #40109498
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
вадя,
сокеты? ))))))))))))))))))))))))
...
Рейтинг: 0 / 0
05.11.2021, 21:50
    #40109499
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индикация работы метода класса
fixxer
и сразу вернуть результат клиенту.

HTTP.OK = 200 результат?
Ты подробнее пиши.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Индикация работы метода класса / 25 сообщений из 81, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]