写点什么

Spring Mobile 1.0 发布

  • 2012-07-04
  • 本文字数:1831 字

    阅读完需:约 6 分钟

近日,SpringSource 发布了 Spring Mobile 1.0 。Spring Mobile 包含了 Spring MVC 的扩展,有助于移动 Web 应用的开发。

Spring Mobile 将服务端的开发模式带到了移动 Web 开发上来,它能够在服务器端检测设备并赋予开发者根据设备来处理不同内容的能力。这与 CSS3 Media Queries 和响应式 Web 设计技术形成了对比,后者的检测与渐进增强都是在客户端完成的。

Spring Mobile 具有如下 3 个主要特性。

设备检测

设备检测是分析 HTTP 请求以决定发出请求的设备的过程。这通常是通过检测 User-Agent 头和其他请求头来实现的。在需要区别对待移动与桌面浏览器的场合下这是非常有用的。要想启用设备检测,请在 DispatcherServlet 配置中添加 DeviceResolverHandlerInterceptor。

复制代码
<mvc:interceptors>
<bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
</mvc:interceptors>

在默认情况下,LiteDeviceResolver 用于设备检测,它基于 WordPress Mobile Pack 的检测算法。你可以通过注入一个 DeviceResolverHandlerInterceptor 构造参数来插入另一个 DeviceResolver 实现。诸如 WURFL 等更加复杂的设备检测可以识别出具体的设备能力,比如说屏幕尺寸、制造商、型号以及首选标记。

你可以通过调用 DeviceUtils.getCurrentDevice() 获得当前的设备,还可以在配置完 DeviceWebArgumentResolver 之后将当前的 Device 作为参数传递给某个 @Controller 方法。

站点首选项管理

用户可以通过站点首选项管理指出他首选的是移动站点抑或常规站点。Spring Mobile 的实现位于 StandardSitePreferenceHandler 中,它支持基于查询参数的站点首选项标识以及可插拔的 SitePreference 存储。如果用户没有明确指定 SitePreference,那么 Spring Mobile 会根据用户设备使用一个默认值。指定的站点首选项会存储在 SitePreferenceRepository 中,默认实现会在客户端 cookie 中保存首选项。

要想启用站点首选项管理,请在 DispatcherServlet 配置中添加 SitePreferenceHandlerInterceptor。

复制代码
<mvc:interceptors>
<bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
<bean class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" />
</mvc:interceptors>

用户可以通过单击某个链接提交 site_preference 查询参数来指定站点首选项。

复制代码
<a href="?site_preference=normal">Normal</a> | <a href="?site_preference=mobile">Mobile</a>

指定的 SitePreference 作为一个请求属性,其名字为“currentSitePreference”。你还可以在配置完 SitePreferenceWebArgumentResolver 后将当前的 SitePreference 以参数的形式传递给某个 @Controller 方法。

复制代码
<mvc:annotation-driven>
<mvc:argument-resolvers>
<bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
<bean class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>

站点切换

站点切换指的是可以根据设备与指定的站点首选项将用户切换至最适合的站点的能力。目前有 3 个 SiteSwitcher 实现。“mDot”工厂方法会构建一个 SiteSwitcher,它会将移动用户重定向至 m.${DOMAIN}。“dotMobi”工厂方法会构建一个 SiteSwitcher,它会将移动用户重定向至 ${DOMAIN - TLD}.mobi。“urlPath”工厂方法会构建一个 SiteSwitcher,它会将移动用户重定向至 ${DOMAIN}/${MOBILE_PATH}。下面的示例介绍了如何配置 mDot SiteSwitcher。

复制代码
<mvc:interceptors>
<bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
<bean class="org.springframework.mobile.device.switcher.SiteSwitcherHandlerInterceptor" factory-method="mDot">
<constructor-arg value="domain.com" />
</bean>
</mvc:interceptors>

感兴趣的读者可以观看这个 4 分钟的 Spring Mobile视频并阅读 Spring Mobile 参考手册来了解更多信息。要想上手,请下载发布包或是添加 Maven 依赖。

复制代码
<dependency>
<groupId>org.springframework.mobile</groupId>
<artifactId>spring-mobile-device</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

Spring Mobile示例位于GitHub 上。

查看英文原文: Spring Mobile 1.0 Released

2012-07-04 10:022564
用户头像

发布了 88 篇内容, 共 273.8 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试|PC端应用自动化最佳解决方案——Pywinauto

霍格沃兹测试开发学社

小程序容器技术助力数字门户拓展多样化服务

FinFish

跨端开发 小程序容器 小程序容器技术 数字门户 移动门户

快手严厉打击直播下收割麦行为:自媒体蹭热度不可违背公序良俗

石头IT视角

三分钟知识点 - 重构平滑升级

雨中山

对比才知差距!海尔“精华洗”用实验告诉用户

脑极体

海尔

C语言编程语法—输入与输出

芯动大师

函数 输入输出 6 月 优质更文活动

关于前端,你都会什么?

MonkeyZz

前端

软件测试|Pytest必会技巧(二)

霍格沃兹测试开发学社

SeaTunnel StarRocks 连接器的使用及原理介绍

StarRocks

数据库 大数据 OLAP 湖仓一体 大数据 开源

K8S | 核心原理分析

Java Docker 架构 Kubernetes k8s

软件测试|Pytest的必会技巧(一)

霍格沃兹测试开发学社

软件测试|Pytest必会技巧(三)

霍格沃兹测试开发学社

软件测试|教你用skip灵活跳过用例

霍格沃兹测试开发学社

Docker技术架构概述

穿过生命散发芬芳

Docker 6 月 优质更文活动

架构实战营模块 1 作业

銀色流星

架构实战营

软件测试|手把手教你用Python来模拟绘制自由落体运动过程中的抛物线

霍格沃兹测试开发学社

软件测试|不会Python RPC,一篇文章教你入门

霍格沃兹测试开发学社

硬核干货!一文掌握 binlog 、redo log、undo log

架构精进之路

MySQL 数据库 后端 6 月 优质更文活动

建立互联网可靠性工程体系框架的思路

阿泽🧸

可靠性工程 6 月 优质更文活动

重磅版本发布|三大关键特性带你认识 Milvus 2.2.9 :JSON、PartitionKey、Dynamic Schema

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

DevOps| 研发效能团队和PMO团队如何合作共赢?

laofo

DevOps cicd 研发效能 持续交付 PMO

分析初识vue小案例

张三丰无极

6 月 优质更文活动

什么是OSPF被动接口?如何配置?华为、思科、瞻博网络三厂商命令来了

wljslmz

OSPF 6 月 优质更文活动

软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

霍格沃兹测试开发学社

软件测试|Pytest必会技巧(四)使用autouse实现自动传参

霍格沃兹测试开发学社

三分钟知识点 - 如何选择编程语言

雨中山

Taro框架应用优势下的移动App开发创新模式

FinFish

taro 跨端开发 小程序容器 跨端框架 小程序容器技术

GitOps 最佳实践(下)| 基于 Amazon EKS 构建 CI/CD 流水线

亚马逊云科技 (Amazon Web Services)

Kubernetes

2023-06-05:Redis官方为什么不提供 Windows版本?

福大大架构师每日一题

redis 福大大

Spring Mobile 1.0发布_Java_Bienvenido David_InfoQ精选文章