Spring Mobile
Spring Mobile - это расширение Spring MVC, которое упрощает разработку мобильных web-приложений.
Быстрый старт

Введение

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

Возможности

  • Определение на серверной стороне типа устройств(мобильные, планшетные, ...)
  • Управление настройками сайта, что позволяет определить, какой из типов "normal", "mobile", или "tablet" предпочтителен для отображения сайта
  • Предоставление пользователю возможности переключения отображения сайта, в зависимости от его предпочтений и его типа устройства
  • Способность переключиться на то отображение сайта, которое соответствует определенному типу устройства

Быстрый старт

Загрузка
Maven
Gradle

Рекомендованный путь для начального использования spring-mobile в вашем проекте с использованием системы управления зависимостями – скопировать фрагмент кода ниже и вставить в вашу конфигурацию сборки. Нужна помощь? Ознакомьтесь с нашими руководствами по созданию приложений с использованием Maven и Gradle.

<dependencies>
    <dependency>
        <groupId>org.springframework.mobile</groupId>
        <artifactId>spring-mobile-device</artifactId>
        <version>1.1.1.RELEASE</version>
    </dependency>
</dependencies>

Определение устройства

Добавьте приведенную ниже Java-конфигурацию для включения определения типа устройств в вашем Spring web-приложении:

@Bean
public DeviceResolverHandlerInterceptor 
        deviceResolverHandlerInterceptor() {
    return new DeviceResolverHandlerInterceptor();
}

@Bean
public DeviceHandlerMethodArgumentResolver 
        deviceHandlerMethodArgumentResolver() {
    return new DeviceHandlerMethodArgumentResolver();
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(deviceResolverHandlerInterceptor());
}

@Override
public void addArgumentResolvers(
        List<HandlerMethodArgumentResolver> argumentResolvers) {
    argumentResolvers.add(deviceHandlerMethodArgumentResolver());
}

Добавьте Device в ваш контроллер:

@Controller
public class HomeController {

    private static final Logger logger = 
            LoggerFactory.getLogger(HomeController.class);

    @RequestMapping("/")
    public void home(Device device) {
        if (device.isMobile()) {
            logger.info("Hello mobile user!");
        } else if (device.isTablet()) {
            logger.info("Hello tablet user!");
        } else {
            logger.info("Hello desktop user!");         
        }
    }
}

Настройка сайта

Добавьте приведенную ниже Java-конфигурацию для включения управления настройкой сайта в вашем Spring web-приложении:

@Bean
public DeviceResolverHandlerInterceptor 
        deviceResolverHandlerInterceptor() {
    return new DeviceResolverHandlerInterceptor();
}

@Bean
public SitePreferenceHandlerInterceptor 
        sitePreferenceHandlerInterceptor() {
    return new SitePreferenceHandlerInterceptor();
}

@Bean
public SitePreferenceHandlerMethodArgumentResolver 
        sitePreferenceHandlerMethodArgumentResolver() {
    return new SitePreferenceHandlerMethodArgumentResolver();
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(deviceResolverHandlerInterceptor());
    registry.addInterceptor(sitePreferenceHandlerInterceptor());
}
@Override
public void addArgumentResolvers(
        List<HandlerMethodArgumentResolver> argumentResolvers) {
    argumentResolvers.add(sitePreferenceHandlerMethodArgumentResolver());
}

Добавьте SitePreference в ваш контроллер:

@Controller
public class HomeController {

    private static final Logger logger = 
            LoggerFactory.getLogger(HomeController.class);

    @RequestMapping("/")
    public String home(SitePreference sitePreference, Model model) {
        if (sitePreference == SitePreference.NORMAL) {
            logger.info("Site preference is normal");
            return "home";
        } else if (sitePreference == SitePreference.MOBILE) {
            logger.info("Site preference is mobile");
            return "home-mobile";
        } else if (sitePreference == SitePreference.TABLET) {
            logger.info("Site preference is tablet");
            return "home-tablet";
        } else {
            logger.info("no site preference");
            return "home";
        }
    }
}

Указание на отображение по типу устройства

Добавьте приведенную ниже Java-конфигурацию для включения указания на отображение в вашем Spring web-приложении. Этим вы определяете, что для мобильного устройства будете отображена страница /WEB-INF/views/mobile/, а для планшетного устройства - /WEB-INF/views/tablet/.

@Bean
public LiteDeviceDelegatingViewResolver liteDeviceAwareViewResolver() {
    InternalResourceViewResolver delegate = 
            new InternalResourceViewResolver();
    delegate.setPrefix("/WEB-INF/views/");
    delegate.setSuffix(".jsp");
    LiteDeviceDelegatingViewResolver resolver = 
            new LiteDeviceDelegatingViewResolver(delegate);
    resolver.setMobilePrefix("mobile/");
    resolver.setTabletPrefix("tablet/");
    return resolver;
}
comments powered by Disqus
Spring Mobile
Версия
Документация