Слияние кода завершено, страница обновится автоматически
Реализован httpsession стандарт, подходящий для обычных web проектов и jfinal проектов с распределённым сеансом.
1. Конфигурация:
1. Через фильтр (рекомендуется для не-jfinal проектов);
/**
*
* BTGHttpSessionRequest заменяет filter (управление локальным сеансом)
* Обратите внимание: этот фильтр должен иметь приоритет выше, чем у фильтров, связанных с бизнес-системой
*
* Если требуется управление сеансами redis или db:
* 1. Пожалуйста, настройте в параметрах инициализации init-param
* sessionDao: опционально, по умолчанию local.
* local — используется local BTGSessionDao;
* redis — используется redis BTGSessionDao
* db — используется db BTGSessionDao;
* dname: опционально, по умолчанию jfinal по умолчанию;
* Если sessionDao — redis, этот параметр представляет собой имя RedisPlugin.
* Если sessionDao — db, этот параметр является именем ActiveRecordPlugin.
* 2. Или расширьте этот класс и перепишите метод init для инициализации sessionDao.
*/
<filter>
<filter-name>btgsession</filter-name>
<filter-class>cn.usbtg.httpsession.servlet.filter.BTGHttpSessionFilter</filter-class>
<init-param>
<param-name>sessionDao</param-name>
<param-value>redis</param-value>
</init-param>
<init-param>
<param-name>dname</param-name>
<param-value>myredis</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>btgsession</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. (Рекомендуется для jfinal проектов) Используйте плагин jfinal + перехватчик (interceptor или handler, выберите один из двух) для настройки (если вы используете стандартный контейнер управления сеансами, настройка плагина не требуется, только когда вам нужно использовать нестандартный BTGSessionDao, вам необходимо выполнить инициализацию в плагине).
JfinalConfig: опциональная конфигурация, пользовательская инициализация реализации sessionDao.
public void configPlugin(Plugins me) {
//local (по умолчанию, без настройки)
BTGSessionDao localSessionDao = new BTGLocalSessionDao();
BTGSessionPlugin sessionPlugin = new BTGSessionPlugin(localSessionDao);
me.add(sessionPlugin);
//redis
BTGSessionDao redisSessionDao = new BTGRedisSessionDao();
BTGSessionDao redisSessionDao = new BTGRedisSessionDao("myredis");
BTGSessionPlugin sessionPlugin = new BTGSessionPlugin(redisSessionDao);
me.add(sessionPlugin);
//db
BTGSessionDao dbSessionDao = new BTGDBSessionDao();
BTGSessionDao dbSessionDao = new BTGDBSessionDao("mydb");
BTGSessionPlugin sessionPlugin = new BTGSessionPlugin(dbSessionDao);
me.add(sessionPlugin);
}
Interceptor: необходимо настроить для замены механизма управления сеансом
me.add(new BTGHttpSessionInterceptor());
Handler: необходимо настроить для замены механизма управления сеансом
me.add(new BTGHttpSessionHandler());
2. Вызов API:
1. Используйте реализацию интерфейса BTGStandardSessionContext класса BTGStandardSessionContext для прямого управления сеансом;
getSession(String sessionId): BTGStandardSessionContext.getSessionContext().getSession(sessionId)
getNewSession(): BTGStandardSessionContext.getSessionContext().getNewSession()
Дополнительные API см. в интерфейсе BTGSessionContext.
2. (Рекомендовано) Использовать статический доступ к классу SessionKit для управления сеансом;
getSession(String sessionId): SessionKit.getSession(sessionId)
getNewSession(): SessionKit.getNewSession()
Дополнительные API см. в классе SessionKit.
4.0.11
1、Исправлена проблема несоответствия sessionid в первом запросе и cookie в ответе.
4.0.10
1、Исправлено неправильное определение таблицы при больших полномочиях других учётных записей.
4.0.9
1、Добавлена поддержка автоматической инициализации таблиц.
4.0.8
1、Обновление btg-util до версии 4.0.14.
v4.0.7
1、Исправление ошибки сохранения и обновления объекта сеанса в oracle.
2、Оптимизация механизма очистки просроченных сеансов, используя отдельный поток для очистки.
3、Расширение параметров поддержки в BTGHttpSessionFilter и BTGSessionPlugin.
v4.0.6
1、Для лучшей совместимости с oracle изменены имена таблиц и столбцов по умолчанию.
2、Добавлен скрипт oracle.
v4.0.5
1、Устранена ошибка, связанная с обработкой секунд как миллисекунд при истечении срока действия сеанса.
v4.0.4
1、Единицей времени истечения сеанса является секунда вместо минуты.
v4.0.3
1、Единица времени истечения сеанса изменена с миллисекунды на минуту.
2、Единицей срабатывания механизма очистки просроченного сеанса является секунда вместо миллисекунды.
3、Значение по умолчанию для параметра «последний доступ к сеансу» установлено на реальное время.
v4.0.2
1、jfinal обновлён до версии 3.6.
v4.0.1
1、Переход на независимый maven-зависимость, удаление parent.
v3.0.3
1、btg-parent обновлён до v2.0.1.
v3.0.2
1、Унификация управления зависимостями.
v3.0.1
1、Перемещение под корпоративное имя.
v2.0.1
1、Преобразование в проект maven.
2、Реорганизация пакетов.
v1.2.1
1、Устранение проблемы с обновлением cookie при обновлении сеанса (interceptor и handler).
v1.1.1.201706161359
1、Устранение проблемы с обновлением cookie при обновлении сессии.
v1.1.1.201706151713
1、Учитывая, что jar-пакет будет поддерживаться более часто, унифицирована схема именования версий.
v1.0.1704071433:
1、Добавление поддержки параметров в filter.
v1.0.1704071018:
1、Исправление логики обновления cookie.
2、Изменение инструкции по использованию (README.md).
v1.0.1704061218:
1、Добавлен обработчик jfinal.
2、BTGSessionPlugin.
3、Исправление логики фильтра.
4、Добавление конфигурации для отключения простого одноточечного входа.
5、Исправление логики intercepter.
v1.0.1704011125:
1、Исправление проблемы с управлением сеансом при обновлении.
v1.0.1703290911:
1、Чтобы избежать слишком частых обновлений, влияющих на производительность, добавлена синхронизация последнего доступа к сеансу с несколькими стратегиями конфигурации. Встроенные три способа:
- в реальном времени (установлено значение 0),
- с интервалом времени (по умолчанию 30000 миллисекунд),
- без обновления (установленное значение меньше 0). 2. Отрегулировать алгоритм обновления последнего времени доступа к сессии: обновлять, если последнее время доступа больше предыдущего.
3. Добавить метод клонирования для BTGSession.
4. Скорректировать алгоритм обновления сессии при обновлении: сохранять исходные параметры сессии (новые значения будут перекрывать старые при повторении).
v1.0.1703240949:
1. Установить путь cookie по умолчанию как название проекта (изначально по умолчанию используется /).
v1.0.20170321:
1. Исправить ошибку, из-за которой путь cookie в BTGSessionPlugin был недействительным.
v1.0.4:
1. Устранить ошибку, когда сессия очищалась после остановки проекта (плагин вызывал метод clear()).
v1.0.3:
1. Изменить путь cookie сессии на настраиваемый.
v1.0.2:
1. Уточнить использование getSession() и getSession(boolean create) (обратиться к официальной документации HttpServlet, где указано, что getSession() эквивалентен getSession(true)).
2. Автоматически записывать cookie сессии.
3. Отменить операцию очистки контейнера сессии при уничтожении через фильтр.
4. Оптимизировать механизм очистки просроченных сессий на основе базы данных, значительно повысив производительность.
5. Включить SQL-скрипт создания таблицы для хранения сессий в базе данных (на данный момент только для MySQL, поддержка других баз данных будет добавлена позже).
v1.0.1:
1. Реализовать HttpSession на основе существующей версии btg-session-jfinal.
2. Предоставить два способа использования конфигурации: фильтр и плагин + перехватчик jfinal.
3. Улучшить стратегию очистки просроченной сессии.
4. Оптимизировать стратегию вторичного кэширования.
5. Повысить производительность.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )