powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлет - событие ClosеSession
25 сообщений из 28, страница 1 из 2
Сервлет - событие ClosеSession
    #39417501
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

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

Буду признателен за пример.
...
Рейтинг: 0 / 0
Сервлет - событие ClosеSession
    #39417514
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HttpSessionListener
...
Рейтинг: 0 / 0
Сервлет - событие ClosеSession
    #39417521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X(сохранения текущих настроек программы в ini-файле на сервере)
какая то странная смесь десктопа и веб).
...
Рейтинг: 0 / 0
Сервлет - событие ClosеSession
    #39417665
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Сервлет - событие ClosеSession
    #39417666
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HOME_X(сохранения текущих настроек программы в ini-файле на сервере)
какая то странная смесь десктопа и веб).

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

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


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

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


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

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


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

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

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

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

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

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

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

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

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

Мне склероз подсказывает, что в обработке события закрытия окна/вкладки поздно посылать запросы. Причем это зависит от браузера.
...
Рейтинг: 0 / 0
Сервлет - событие ClosеSession
    #39417892
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Не исключена ситуация, что сразу несколько пользователей инициируют событие сохранения состояния.
Да, и одному пользователю никто не запретит многопоточность.
...
Рейтинг: 0 / 0
Сервлет - событие ClosеSession
    #39417894
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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
Сервлет - событие ClosеSession
    #39417895
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XПредставьте себе
1. окно в нем 10-15-20 объектов <input type=text ......>
2. жмете кнопку Save - данные вносятся на сервер базы (частный случай это INI файл)
3. удаляем кнопку Save - (усложняем задачу)
4. выходим из окна (явно или аварийно) - данные должны сохраниться
5. загружаем страницу - видим данные последнего состояния.

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

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


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