写点什么

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:022567
用户头像

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

关注

评论

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

模块2作业

灯火阑珊

让孩子爱上阅读(二)

箭上有毒

读书笔记 4月日更

Seldon 使用 (三): 模型服务如何运行

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

采访彩食鲜 CTO 乔新亮:数字时代,企业如何完成数字化转型?(采访提纲)

xcbeyond

数字化转型 4月日更 人物访谈

阿里致敬武侠首发“Java架构修炼笔记”,深入内核,拒绝蒙圈

Java架构师迁哥

如何做向上管理?

石云升

28天写作 职场经验 4月日更 向上管理

wkhtmltopdf实践

风翱

4月日更 wkhtmltopdf

这套Java面试题推出第二天就惨遭全网封杀!已帮我拿下15个Offer

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

【LeetCode】存在重复元素 III Java题解

Albert

算法 LeetCode 4月日更

Linux ifconfig 命令

一个大红包

4月日更

增强产业链供应链自主可控能力,区块链能否贡献力量?

CECBC

区块链

架构实战营 - 模块二作业

凯迪

架构实战营

2020从干饭人到打工人

空城机

生活 生活记录 杂记 4月日更

模块2-微信朋友圈高性能架构设计

yu

阿里巴巴用实践告诉你,架构师到底需要掌握什么样的技术?

Java架构师迁哥

架构实战营 模块二:学习总结

👈

架构实战营

Nacos实践

程序员架构进阶

源码分析 微服务 nacos 28天写作 4月日更

架构实战营 - 模块 2- 作业

请弄脏我的身体

架构实战营

架构实战营 - 模块 2- 作业

冬天的树

Flutter 学习笔记(二) Container 组件

U2647

flutter 4月日更

WEB-API的设计与开发

GeekYin

HTTP 软件设计 web tech

Github接近10w点赞!阿里巴巴内部Java面试参考指南

Java 程序员 架构 面试

业务架构训练营第 0 期模块二作业

目标一个亿

架构实战营 - 模块二作业

Sun

nginx反向代理和负载均衡策略实战案例

赖猫

nginx

重读《重构2》- 引入参数对象

顿晓

重构 4月日更

我是如何从零开始学Python: (1)如何选择合适的Python学习工具?

广之巅

Python 4月日更

陪伴的进化

小天同学

陪伴 爱情 个人感悟 4月日更 亲情

华为“引商”,VR“刻羽”,共觅知音人

脑极体

Spark运行状态监控与优化

小舰

4月日更

架构实战营 模块二:课后作业

👈

架构实战营

Spring Mobile 1.0发布_Java_Bienvenido David_InfoQ精选文章