1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zcltd-btg-btg-autoroute-jfinal

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект jfinal: автоматический маршрутизатор

Проект

jfinal — это плагин автоматического маршрутизатора.

Особенности проекта

  • Поддержка различных конфигураций;
  • Возможность настройки, будет ли один класс маршрутизироваться несколько раз;
  • Поддержка особых случаев, когда нельзя использовать стандартные правила маршрутизации, но можно настроить ручное сопоставление;
  • Алгоритм для предотвращения повторяющихся маршрутов;
  • Метки маршрутизации (например, для проверки входа в систему, проверки подписи и т. д.);
  • Неинтрузивный ручной маршрутизатор на основе регулярных выражений, который просто пересылает запросы без изменения (требуется только конфигурация обработчика);
  • Ручной маршрутизатор имеет более высокий приоритет, чем встроенный маршрутизатор jfinal (при использовании jfinal следует учитывать, что правила ручного маршрутизатора могут перекрывать встроенные правила, например, /my/{param} будет перекрыт /my/method1).

Структура исходного кода

  • annotation: аннотация, используемая для маршрутизации;
  • converter: способ преобразования className в controllerName, можно расширить, реализовав ControllerNameConverter;
  • formatter: способ преобразования controllerName в actionKey, можно расширить с помощью AllToLowerControllerNameFormatter или FirstToLowerControllerNameFormatter;
  • handler: обработчик, используемый для ручного маршрута;
  • AutoRoutesAnnotation: основной класс, предоставляющий API для прямого использования;
  • HttpRequestMethod: перечисление типов протоколов HTTP-запросов.

Сторонние зависимости

  1. jfinal: https://gitee.com/jfinal/jfinal;
  2. servlet-api: требуется для обработчиков jfinal;
  3. slf4j: используется фреймворк для ведения журнала плагина (можно выбрать jdk log, log4j, connons log и т.д., необходимо самостоятельно добавить);
  4. btg-util: открытый исходный код, https://gitee.com/zcltd-btg/btg-util;
  5. junit: используется для тестовых классов (необязательно в рабочей среде).

Использование

(см. комментарии в классе AutoRoutesAnnotation)

Автоматическое маршрутизация с использованием аннотаций jfinal

  • Пространство имён аннотации: глобальное пространство имён > пространство имён пакета > пространство имён класса;

  • Для пространства имён класса: предпочтительно использовать AutoRouteNamespace и AutoRouteUrl;

  • Если для пространства имён класса не настроены AutoRouteNamespace и AutoRouteUrl, предпочтительно использовать AutoRoute;

  • Если все пространства имён не настроены, используется значение по умолчанию;

  • При настройке пользовательского маршрута пользовательский маршрут имеет наивысший приоритет;

  • Когда указано, что контроллер может быть зарегистрирован повторно или AutoRouteRepeat имеет значение true (настройка приоритета > приоритет аннотации), один и тот же класс может маршрутизироваться несколько раз. Если AutoRouteRepeat равен false, последующие конфигурации игнорируются, и используется первая конфигурация маршрутизации.

  • Правила маршрутизации:*

    • Контроллер по умолчанию — /;
    • Обычный контроллер — окончательное сопоставление: глобальное пространство имен + пространство имён пакета + пространство имён класса;
    • Если пространство имён не указано, оно определяется на основе местоположения добавляемого файла (или имени пакета) в качестве начальной позиции, а подпапки используются в качестве пространства имён;
    • Если путь доступа не указан, имя класса преобразуется в нижний регистр, а действие или контроллер удаляются как путь доступа.

Ручной маршрутизатор:

  • Ручной маршрут требует добавления аннотации ManuallyRoute к методу и указания url и http (по умолчанию пустая строка), method (по умолчанию все методы);
  • Принцип ручного маршрутизатора заключается в том, чтобы переслать запрос на реальный маршрутизатор jfinal через обработчик, поэтому он не связан с метками;
  • В url можно указать параметры-заполнители, которые будут преобразованы в атрибуты запроса с помощью регулярного выражения;
  • Ручные маршруты являются маршрутами на уровне метода и не конфликтуют с предыдущими маршрутами действий, правила действий остаются в силе.

О тегах:

  • Теги предназначены для маркировки целей маршрутизации jfinal (важно);
  • Можно использовать несколько тегов, поддерживаются аннотации и ручная настройка;
  • Поддерживается получение тегов из URL и проверка наличия тегов в URL;
  • При маршрутизации можно использовать AutoRoutesAnnotation.create(me) для инициализации экземпляра, а в interceptor можно использовать AutoRoutesAnnotation.getInstance() для получения экземпляра. v1.0.6:
  1. Учитывая, что в будущем поддержка jar-пакета может потребоваться довольно часто, было решено использовать единую схему наименования версий.

v1.0.5:

  1. Исправлена проблема с символом точки в многоуровневых маршрутах package (точки были заменены на символ /).
  2. Добавлен класс преобразователя имён контроллеров IControllerNameConverter (по умолчанию реализует удаление суффикса и предоставляет возможность добавления или удаления суффикса, встроенные контроллеры, сервисы и действия имеют три вида суффиксов) и расширенный форматтер имён контроллеров IControllerNameFormatter (предоставляет реализацию для полного преобразования всех дочерних элементов в нижний регистр и для преобразования первой буквы в нижний регистр, по умолчанию используется полное преобразование всех дочерних элементов в нижний регистр), расширение реализуется путём реализации интерфейса и написания собственной реализации, реализация может быть внедрена в AutoRoutesAnnotation (вызов метода set).

v1.0.4:

  1. Добавлено описание того, можно ли повторно маршрутизировать, а также способ использования конфигурации.
  2. Добавлена поддержка аннотаций для проверки истечения срока действия сеанса и сама аннотация.

v1.0.3:

  1. Добавлены настройки и аннотация для определения повторяющихся классов контроллеров.
  2. Исправлено несколько ошибок.

v1.0.2:

  1. Добавлен пользовательский маршрут.

v1.0.1:

  1. Автоматический маршрут на основе аннотации Jfinal.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zcltd-btg-btg-autoroute-jfinal.git
git@api.gitlife.ru:oschina-mirror/zcltd-btg-btg-autoroute-jfinal.git
oschina-mirror
zcltd-btg-btg-autoroute-jfinal
zcltd-btg-btg-autoroute-jfinal
master