Spring Mobile

Spring Mobile is a framework that provides capabilities to detect the type of device making a request to your Spring web site and serve alternative views based on that device. Like all Spring projects, the real power of Spring Mobile is found in how easily it can be extended.
Features

A Device resolver abstraction for server-side detection of mobile and tablet devices
Site preference management that allows the user to indicate if he or she prefers a “normal”, “mobile”, or “tablet” experience
A site switcher capable of switching the user to the most appropriate site, either mobile, tablet, or normal, based on his or her device and optionally indicated site preference
Device aware view management for organizing and managing different views for specific devices

Quick Start
Download
Maven
Gradle

The recommended way to get started using spring-mobile in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides on building with Maven and Gradle.

org.springframework.mobile spring-mobile-device 2.0.0.M3 spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false

Device detection

Add the following Java-based configuration to enable device detection in a Spring web application:

@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 argumentResolvers) {
argumentResolvers.add(deviceHandlerMethodArgumentResolver());
}

Inject the Device into your controller:

@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!");         
    }
}

}

Site preference

Add the following Java-based configuration to enable site preference management in a Spring web application:

@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 argumentResolvers) {
argumentResolvers.add(sitePreferenceHandlerMethodArgumentResolver());
}

Inject the SitePreference into your controller:

@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";
    }
}

}

Device aware view resolution

Add the following Java-based configuration to enable device aware views in a Spring web application. This specifies that Spring Mobile will look for mobile views in /WEB-INF/views/mobile/ and tablet views in /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;
}

发布了0 篇原创文章 · 获赞 0 · 访问量 956

猜你喜欢

转载自blog.csdn.net/blog_programb/article/details/104594061