英文原文:https://projects.spring.io/spring-mobile/

目录

特性

快速开始

设备检测

网站偏好

设备感知视图分辨率

Sample Projects

Getting Started Guides


Spring Mobile是Spring MVC的扩展,旨在简化移动Web应用程序的开发。

Spring Mobile是一个框架,它提供了检测向Spring网站发出请求的设备类型以及基于该设备提供备用视图的功能。 像所有Spring项目一样,Spring Mobile的真正强大之处在于它可以轻松扩展。

特性

  • 用于移动设备和平板电脑设备的服务器端检测的设备解析器抽象
  • 网站偏好管理,允许用户指示他或她是否更喜欢“正常-normal”,“移动-mobile”或“平板电脑-tablet”体验
  • 一种站点切换器,能够根据用户的设备和可选的站点偏好,将用户切换到最合适的站点(移动设备,平板电脑或普通站点)
  • 设备感知视图管理,用于组织和管理特定设备的不同视图

快速开始

在项目中使用spring-mobile的推荐方法是使用依赖管理系统 - 下面的代码片段可以复制并粘贴到您的构建中。 需要帮忙? 请参阅我们的Maven和Gradle构建入门指南。

设备检测

添加以下基于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());
}

将设备注入控制器:

@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应用程序中启用设备感知视图。 这指定Spring Mobile将在/WEB-INF/views/tablet/中的/ WEB-INF/views/mobile/和平板电脑视图中查找移动视图。

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

Sample Projects

  • Spring Mobile Samples

Getting Started Guides

  • Detecting a Device
  • Handling Web Site Preference
  • Serving Mobile Web Content with Spring MVC

Spring系列学习之Spring Mobile相关推荐

  1. Spring系列学习之Spring Data Elasticsearch数据访问

    英文原文:https://spring.io/projects/spring-data-elasticsearch 目录 概述 特性 快速开始 学习 文档 概述 Elasticsearch的Sprin ...

  2. Spring系列学习之Spring Cloud Task App Starters 微服务任务进程可执行程序

    英文原文:http://cloud.spring.io/spring-cloud-task-app-starters/ 目录 Spring Cloud Task App Starters 特性 可用应 ...

  3. Spring系列学习之Spring Cloud Contract测试消息传递

    英文原文:https://spring.io/projects/spring-cloud-contract 目录 概述 特性 Spring Boot配置 Server / Producer方面 Cli ...

  4. Spring系列学习之Spring Integration

    英文原文:https://spring.io/projects/spring-integration 目录 概述 介绍 特性 例子 Spring Boot配置 快速开始 学习 文档 指南 示例 概述 ...

  5. Spring系列学习之Spring Vault

    英文原文:https://spring.io/projects/spring-vault 目录 概述 快速开始 学习 文档 示例 概述 Spring Vault提供熟悉的Spring抽象和客户端支持, ...

  6. Spring系列学习之Spring Cloud Connectors微服务连接器

    英文原文:https://spring.io/projects/spring-cloud-connectors 概述 Spring Cloud Connectors简化了云平台(如Cloud Foun ...

  7. Spring系列学习之Spring Cloud Pipelines微服务管道

    英文原文:https://spring.io/projects/spring-cloud-pipelines 目录 概述 特性 Spring Boot配置 运行Cloud Foundry的演示 Con ...

  8. Spring系列学习之Spring Web Services

    英文原文:https://spring.io/projects/spring-ws 目录 概述 特性 Spring Boot配置 快速开始 学习 文档 概述 Spring Web Services(S ...

  9. Spring系列学习之Spring Roo

    英文原文:https://projects.spring.io/spring-roo/ 目录 令人兴奋的功能 - Spring Boot,Spring Data,...... 零风险 - 没有妥协的生 ...

  10. Spring系列学习之Spring Data Pivotal GemFire数据访问

    英文原文:https://spring.io/projects/spring-data-gemfire 目录 概述 特性 快速开始 学习 文档 概述 Pivotal GemFire项目的Spring ...

最新文章

  1. 产品汪才不是你想的辣么简单
  2. 在mojoportal项目中发邮件使用的是dotnetopenmail
  3. 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...
  4. 【原创】关于MATLAB中imagesc函数图像保存的问题
  5. Nexus 安装 使用说明
  6. 查询mysql所有表的大小
  7. idea启动Tomcat控制台乱码但是不报错
  8. Create a virtualbox Based CentOS 6 OpenStack Cloud Image
  9. ubuntu下使用screen用不关闭
  10. react你问我答系列之——就是逼逼
  11. 使用Zoiper与freeSWITCH开视频会议
  12. 自动控制原理7.1---离散系统的基本概念
  13. Mathmatica的学习打卡day 16
  14. matlab(simulink)里怎么求一个波形的动态平均值
  15. 利用π/4=1-1/3+1/5-1/7+1/9+……,编程计算π近似值,直到最后一项的绝对值小于10的负5次方为止,输出π的值并统计累加的项数。
  16. 909-MySQL的MVCC机制下,可重复读级别不能完全解决虚读
  17. Mybatis学习(狂神)
  18. win7旗舰版64位GHOST版的,安装telnet客户端时,提示:出现错误。并非所有的功能被成功更改。...
  19. 容器安全检测工具之一:docker bench
  20. zsh与bash区别

热门文章

  1. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)
  2. PyTorch Tensor 的形状
  3. Docker 搭建 Jenkins 流水线项目配置
  4. 【文献阅读】Adaptive Quantitative Trading: An Imitative Deep Reinforcement Learning Approach
  5. RuntimeError: a leaf Variable that requires grad has been used in an in-place operation
  6. 2个JS版的MD5加密脚本
  7. 基于麒麟SP10服务器版的Kubernetes集群安装
  8. 汉语编程联姻大中院校
  9. MATLAB中被误解的赋值:a([2,2])和a(2,2)
  10. 01组团队项目-Alpha冲刺-6/6