Руководство по Spring Mobile

Руководство по Spring Mobile

1. обзор

Spring Mobile - это современное расширение популярного фреймворкаSpring Web MVC, которое помогает упростить разработку веб-приложений, которые должны быть полностью или частично совместимы с кросс-девайсными платформами, с минимальными усилиями и меньшим количеством шаблонного кода.

В этой статье мы узнаем о проекте Spring Mobile и создадим пример проекта, чтобы показать использование Spring Mobile.

2. Особенности Spring Mobile

  • Automatic Device Detection: Spring Mobile имеет встроенный уровень абстракции серверного распознавателя устройств. При этом анализируются все входящие запросы и определяется информация об устройстве отправителя, например, тип устройства, операционная система и т. Д.

  • Site Preference Management: Используя управление настройками сайта, Spring Mobile позволяет пользователям выбирать мобильный / планшетный / нормальный вид веб-сайта. Это сравнительно устаревший метод, поскольку, используяDeviceDelegatingViewresolver, мы можем сохранить уровень представления в зависимости от типа устройства, не требуя каких-либо действий со стороны пользователя.

  • Site Switcher: Site Switcher может автоматически переключать пользователей на наиболее подходящий вид в соответствии с типом его / ее устройства (т.е. мобильный, рабочий стол и т. д.)

  • Device Aware View Manager: Обычно, в зависимости от типа устройства, мы перенаправляем запрос пользователя на определенный сайт, предназначенный для обработки конкретного устройства. View Manager Spring Mobile позволяет разработчику гибко помещать все представления в предопределенный формат, а Spring Mobile будет автоматически управлять различными представлениями в зависимости от типа устройства.

3. Создание приложения

Теперь давайте создадим демонстрационное приложение, используя Spring Mobile с Spring Boot иFreemarker Template Engine, и попытаемся получить сведения об устройстве с минимальным объемом кода.

3.1. Maven Зависимости

Прежде чем мы начнем, нам нужно добавить следующую зависимость Spring Mobile вpom.xml:


    org.springframework.mobile
    spring-mobile-device
    1.1.5.RELEASE

Мы можем проверить последнюю версию Spring Mobile вCentral Maven Repository.

3.2. Создание шаблонов Freemarker

Во-первых, давайте создадим нашу индексную страницу с помощью Freemarker. Не забудьте установить необходимую зависимость, чтобы включить автоконфигурацию Freemarker.

Поскольку мы пытаемся определить устройство отправителя и соответствующим образом направить запрос, нам нужно создать три отдельных файла Freemarker для решения этой проблемы; один для обработки мобильного запроса, другой для обработки планшета и последний (по умолчанию) для обработки обычного запроса браузера.

Нам нужно создать две папки с именами «mobile» и «tablet» в папкеsrc/main/resources/templates и поместить файлы Freemarker соответственно. Окончательная структура должна выглядеть так:

└── src
    └── main
        └── resources
            └── templates
                └── index.ftl
                └── mobile
                    └── index.ftl
                └── tablet
                    └── index.ftl

Теперь давайте поместим следующиеHTML в файлыindex.ftl:

You are into browser version

В зависимости от типа устройства мы изменим содержимое тега<h1>,

3.3. ВключитьDeviceDelegatingViewresolver

Чтобы включить службу Spring MobileDeviceDelegatingViewresolver, нам нужно поместить следующее свойство внутриapplication.properties:

spring.mobile.devicedelegatingviewresolver.enabled: true

Функция настройки сайта включена по умолчанию в Spring Boot, когда вы включаете Spring Mobile Starter. Однако его можно отключить, установив для следующего свойства значение false:

spring.mobile.sitepreference.enabled: true

3.4. Создать контроллер

Теперь нам нужно создать классController для обработки входящего запроса. Мы бы использовали простую аннотацию@GetMapping для обработки запроса:

@Controller
public class IndexController {

    @GetMapping("/")
    public String greeting(Device device) {

        String deviceType = "browser";
        String platform = "browser";

        if (device.isNormal()) {
            deviceType = "browser";
        } else if (device.isMobile()) {
            deviceType = "mobile";
        } else if (device.isTablet()) {
            deviceType = "tablet";
        }

        platform = device.getDevicePlatform().name();

        if (platform.equalsIgnoreCase("UNKNOWN")) {
            platform = "browser";
        }

        return "index";
    }
}

Несколько вещей, чтобы отметить здесь:

  • В методе отображения обработчиков мы передаемorg.springframework.mobile.device.Device. Это информация о введенном устройстве с каждым запросом. Это делается с помощьюDeviceDelegatingViewresolver, который мы включили вapllication.properties

  • org.springframework.mobile.device.Device имеет несколько встроенных методов, таких какisMobile(), isTablet(), getDevicePlatform() и т. Д. Используя их, мы можем получить всю необходимую нам информацию об устройстве и использовать ее

3.5. Java Config

Мы почти закончили. Последнее, что нужно сделать, это создать класс конфигурации Spring Boot для запуска приложения:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4. Тестирование приложения

Как только мы запустим приложение, оно запустится наhttp://localhost:8080.

We will use Google Chrome’s Developer Console to emulate different kinds of device. Мы можем включить его, нажавctrl + shift + i или нажавF12.

По умолчанию, если мы откроем главную страницу, мы увидим, что Spring Web обнаруживает устройство как браузер на рабочем столе. Мы должны увидеть следующий результат:

image

 

Теперь на панели консоли нажимаем второй значок в левом верхнем углу. Это позволит мобильное представление браузера.

Мы могли видеть выпадающий список в верхнем левом углу браузера. В раскрывающемся списке мы можем выбрать различные типы устройств. Чтобы эмулировать мобильное устройство, выберите Nexus 6P и обновите страницу.

Как только мы обновим страницу, мы заметим, чтоcontent of the page changes because DeviceDelegatingViewresolver has already detected that the last request came from a mobile device. Следовательно, он передал файлindex.ftl внутри мобильной папки в шаблонах.

Вот результат:

image

Точно так же мы собираемся эмулировать версию для планшета. Давайте, как в прошлый раз, выберем iPad из раскрывающегося списка и обновим страницу. Содержание будет изменено, и его следует рассматривать как представление планшета:

image

Теперь мы посмотрим, работает ли функция настройки сайта должным образом или нет.

Чтобы смоделировать сценарий в реальном времени, когда пользователь хочет просматривать сайт в мобильном режиме, просто добавьте следующий параметр URL в конце URL по умолчанию:

?site_preference=mobile

После обновления представление должно быть автоматически перемещено в мобильное представление, т.е. Будет отображаться следующий текст: «Вы находитесь в мобильной версии».

Таким же образом, чтобы имитировать предпочтения планшета, просто добавьте следующий параметр URL в конце URL по умолчанию:

?site_preference=tablet

И, как и в прошлый раз, вид должен автоматически обновляться до вида планшета.

Обратите внимание, что URL-адрес по умолчанию останется прежним, и если пользователь снова перейдет по URL-адресу по умолчанию, он будет перенаправлен в соответствующее представление в зависимости от типа устройства.

5. Заключение

Мы только что создали веб-приложение и реализовали кроссплатформенную функциональность. С точки зрения производительности, это колоссальный прирост производительности. Spring Mobile eliminates many front-end scripting to handle cross-browser behavior, thus reducing development time.с

Как всегда, обновленный исходный код -over on GitHub.