Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлет - событие ClosеSession / 25 сообщений из 28, страница 1 из 2
12.03.2017, 01:34
    #39417501
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Доброго дня господа !

Есть Java сервлет - в момент закрытия сеанса пользователем необходимо осуществить ряд действия.
(сохранения текущих настроек программы в ini-файле на сервере)
Как это сделать ? В window-е софтах это событие OnClose

Буду признателен за пример.
...
Рейтинг: 0 / 0
12.03.2017, 06:21
    #39417514
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HttpSessionListener
...
Рейтинг: 0 / 0
12.03.2017, 09:22
    #39417521
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_X(сохранения текущих настроек программы в ini-файле на сервере)
какая то странная смесь десктопа и веб).
...
Рейтинг: 0 / 0
12.03.2017, 19:28
    #39417665
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Blazkowicz,

Прошу подтвердить верно ли Вас понял

1. Описали класс
Код: 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.
package spp;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounterListener implements HttpSessionListener 
{

  private static int totalActiveSessions;

  public static int getTotalActiveSession()
  {
	return totalActiveSessions;
  }

  @Override
  public void sessionCreated(HttpSessionEvent arg0) 
  {
	totalActiveSessions++;
	System.out.println("sessionCreated - add one session into counter " +totalActiveSessions);
  }

  @Override
  public void sessionDestroyed(HttpSessionEvent arg0) 
  {
	totalActiveSessions--;
	System.out.println("sessionDestroyed - deduct one session from counter "+totalActiveSessions);
  }
}



2. Подложили его на сервер - описали чтение класса
Код: html
1.
2.
3.
  <listener>
     <listener-class>spp.SessionCounterListener</listener-class>
  </listener>



3.Из пользовательского сервлета не забываем установить TIMEOUT
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	   throws ServletException, IOException 
	{
		HttpSession session = request.getSession(); //sessionCreated()
		session.setAttribute("url", "spp");
		session.setMaxInactiveInterval(1*60);          //sessionDestroyed()
		//session.invalidate();                                  //sessionDestroyed()
		doExecute(request, response);
	}



Событие Destroyed наступит, если отработает метод session.invalidate или страница
свалится аварийно тогда отработает timeout
Верно понимаю ?

Это обработчик событий для всего сервера
Если мне необходимо установить данное событие (сохранение ini) на отдельно взятую
страницу, чем именно иденти-ровать страницу ? session.setAttribute("url", "spp"); ?

Спасибо
...
Рейтинг: 0 / 0
12.03.2017, 19:38
    #39417666
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Petro123HOME_X(сохранения текущих настроек программы в ini-файле на сервере)
какая то странная смесь десктопа и веб).

Вы правы ... наверное странная картина
переписываю win приложение под web (отсюда Вы и заметили ПРИмесь )
необходимо сохранить последнее состояние параметров (в разрезе пользователей не надо)
Дайте совет - как делать правильно организовать

Заранее благодарен !
...
Рейтинг: 0 / 0
12.03.2017, 19:43
    #39417670
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_Xпереписываю win приложение под web (отсюда Вы и заметили ПРИмесь )
- длинные транзакции под короткие?
HOME_Xнеобходимо сохранить последнее состояние параметров (в разрезе пользователей не надо)
Дайте совет - как делать правильно организовать
военная тайна? Опиши параметр который с клиента от пользователя, но в разрезе пользователя не нужен.
...
Тут нужно 2 листа A4 описать проект чтобы советовать.
...
Рейтинг: 0 / 0
12.03.2017, 19:45
    #39417672
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_X,
Моё IMHO всегда было в том, что десктоп кастомизировать под веб нельзя.
Только переписать проект.
...
Рейтинг: 0 / 0
13.03.2017, 00:53
    #39417803
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Petro123Тут нужно 2 листа A4 описать проект чтобы советовать.


Представьте себе
1. окно в нем 10-15-20 объектов <input type=text ......>
2. жмете кнопку Save - данные вносятся на сервер базы (частный случай это INI файл)
3. удаляем кнопку Save - (усложняем задачу)
4. выходим из окна (явно или аварийно) - данные должны сохраниться
5. загружаем страницу - видим данные последнего состояния.

Вот такой сервис. кусочек (отсюда вопрос относительно OnClose.)
Это сложно ?
...
Рейтинг: 0 / 0
13.03.2017, 00:55
    #39417804
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Petro123HOME_X,
Моё IMHO всегда было в том, что десктоп кастомизировать под веб нельзя.
Только переписать проект.


Конечно переписать- другая архитектура и другие механизмы
Но в целом переписываются на РАЗ (ну может на ДВА РАЗА)
...
Рейтинг: 0 / 0
13.03.2017, 08:17
    #39417841
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_X4. выходим из окна (явно или аварийно) - данные должны сохраниться
У тебя была Г...архитектура в клиент-сервере и ты теперь тащищь это Г в веб проект.
В клиент-сервере, пи закрытии окна не остаётся это окно в том же состоянии.
Я бы уговорил начальство (попытался) на добавление кнопки большой и красной "Сохранить".
...
Рейтинг: 0 / 0
13.03.2017, 08:25
    #39417843
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_Xвыходим из окна (явно или аварийно) - данные должны сохраниться
Есть событие закрытия окна/вкладки браузера, подписаться на это событие и всё.
...
Рейтинг: 0 / 0
13.03.2017, 08:53
    #39417848
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_XПредставьте себе
1. окно в нем 10-15-20 объектов <input type=text ......>
2. жмете кнопку Save - данные вносятся на сервер базы (частный случай это INI файл)
3. удаляем кнопку Save - (усложняем задачу)
4. выходим из окна (явно или аварийно) - данные должны сохраниться
5. загружаем страницу - видим данные последнего состояния.

Вот такой сервис. кусочек (отсюда вопрос относительно OnClose.)
Это сложно ?
это сделать не сложно, если сохранять автоматом всё введённое, можно даже производить сохранение после ввода каждого символа.
...
Рейтинг: 0 / 0
13.03.2017, 09:17
    #39417860
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_XPetro123Тут нужно 2 листа A4 описать проект чтобы советовать.


Представьте себе
1. окно в нем 10-15-20 объектов <input type=text ......>
2. жмете кнопку Save - данные вносятся на сервер базы (частный случай это INI файл)
3. удаляем кнопку Save - (усложняем задачу)
4. выходим из окна (явно или аварийно) - данные должны сохраниться
5. загружаем страницу - видим данные последнего состояния.

Вот такой сервис. кусочек (отсюда вопрос относительно OnClose.)
Это сложно ?

ИМХО проще "сохранение" вешать на onChange соответствующих полей.
Что-то изменилось - сохранили.
...
Рейтинг: 0 / 0
13.03.2017, 09:43
    #39417865
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
FishHookHOME_Xвыходим из окна (явно или аварийно) - данные должны сохраниться
Есть событие закрытия окна/вкладки браузера, подписаться на это событие и всё.

Не могли бы черкнуть пример ...
Насколько понимаю это необходимо писать в JS <SCRIPT> .....</SCRIPT>

Заранее благодарен !
...
Рейтинг: 0 / 0
13.03.2017, 09:50
    #39417867
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_X переписываю win приложение под web (отсюда Вы и заметили ПРИмесь )
необходимо сохранить последнее состояние параметров (в разрезе пользователей не надо)

В Web приложении лучше писать в базу, иначе столкнетесь с необходимостью реализовывать транзакционную модель при работе с файлами (.ini). Не исключена ситуация, что сразу несколько пользователей инициируют событие сохранения состояния.
...
Рейтинг: 0 / 0
13.03.2017, 10:12
    #39417879
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_XFishHookпропущено...

Есть событие закрытия окна/вкладки браузера, подписаться на это событие и всё.

Не могли бы черкнуть пример ...
Насколько понимаю это необходимо писать в JS <SCRIPT> .....</SCRIPT>

Заранее благодарен !
это не спасет от прочих неприятностей — отпадения инета, фазы.
оптимальнее — на onchenge
...
Рейтинг: 0 / 0
13.03.2017, 10:21
    #39417882
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
FishHookHOME_Xвыходим из окна (явно или аварийно) - данные должны сохраниться
Есть событие закрытия окна/вкладки браузера, подписаться на это событие и всё.

Мне склероз подсказывает, что в обработке события закрытия окна/вкладки поздно посылать запросы. Причем это зависит от браузера.
...
Рейтинг: 0 / 0
13.03.2017, 10:27
    #39417892
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
SQL2008Не исключена ситуация, что сразу несколько пользователей инициируют событие сохранения состояния.
Да, и одному пользователю никто не запретит многопоточность.
...
Рейтинг: 0 / 0
13.03.2017, 10:28
    #39417894
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
[quot HOME_X]
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
  private static int totalActiveSessions;

  public void sessionCreated(HttpSessionEvent arg0)   {
	totalActiveSessions++;
  }

  public void sessionDestroyed(HttpSessionEvent arg0)  {
	totalActiveSessions--;
  }


Многопоточность... атомарные операции... синхронизация... это же всё не про нас. Правда?
...
Рейтинг: 0 / 0
13.03.2017, 10:30
    #39417895
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
HOME_XПредставьте себе
1. окно в нем 10-15-20 объектов <input type=text ......>
2. жмете кнопку Save - данные вносятся на сервер базы (частный случай это INI файл)
3. удаляем кнопку Save - (усложняем задачу)
4. выходим из окна (явно или аварийно) - данные должны сохраниться
5. загружаем страницу - видим данные последнего состояния.

Вот такой сервис. кусочек (отсюда вопрос относительно OnClose.)
Это сложно ?
Посмотри как работает Google Docs - данные отправляются на сервер всегда. Кнопки Save как бы нет. В твоём случае Save это просто будет команда серверу перевести данные из категории временных в постоянные.
...
Рейтинг: 0 / 0
13.03.2017, 12:23
    #39417979
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
уговорить шефа на кнопку Сохранить или много много писать кода и ловить все телодвижения.
Я даже предвижу на чём вы там остановитесь в результате).
...
Рейтинг: 0 / 0
13.03.2017, 12:36
    #39417998
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Petro123уговорить шефа на кнопку Сохранить или много много писать кода и ловить все телодвижения.
Я даже предвижу на чём вы там остановитесь в результате).
поставить листенер и это весь код
...
Рейтинг: 0 / 0
13.03.2017, 12:56
    #39418014
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
Alexander A. SakМне склероз подсказывает, что в обработке события закрытия окна/вкладки поздно посылать запросы. Причем это зависит от браузера.
Почему? Закрытие вкладки можно предотвратить, например, выкинув алерт.
...
Рейтинг: 0 / 0
13.03.2017, 13:05
    #39418028
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
вадяPetro123уговорить шефа на кнопку Сохранить или много много писать кода и ловить все телодвижения.
Я даже предвижу на чём вы там остановитесь в результате).
поставить листенер и это весь код
вы путаетесь в показаниях).
Немного выше вы пугали неприятностями)
авторэто не спасет от прочих неприятностей — отпадения инета, фазы.
оптимальнее — на onchenge
Это называется: "Баба Яга против!"
...
Рейтинг: 0 / 0
13.03.2017, 13:35
    #39418067
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервлет - событие ClosеSession
FishHookAlexander A. SakМне склероз подсказывает, что в обработке события закрытия окна/вкладки поздно посылать запросы. Причем это зависит от браузера.
Почему? Закрытие вкладки можно предотвратить, например, выкинув алерт.

Да, так и рекомендуют делать. Но никто же не гарантирует, что разработчики браузеров или стандартов решат, что в этом событии вообще нельзя посылать запросы. Или алерты вызывать.
Вот, нарыл Navigator.sendBeacon() https://developer.mozilla.org/ru/docs/Web/API/Navigator/sendBeacon
Это ж-ж-ж не с проста (с).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлет - событие ClosеSession / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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