写点什么

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

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

关注

评论

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

住宅代理IP在保护品牌形象中起到关键性作用

摘星星的猫

解读|如何利用 NFTScan 解锁当前 NFT 生态走势

NFT Research

NFT\ NFTScan NFT开发

Solidity案例详解(一)存钱罐合约

BSN研习社

区块链 Solidity

淘宝/天猫店铺商品详情 API 实现实时数据获取:快速、稳定、高效

Noah

第五代英特尔至强可扩展处理器以强劲性能,打造更“全能”的计算

E科讯

集合-Java-笛卡尔积、平铺

alexgaoyh

Java 集合运算 笛卡尔积 数据平铺

使用 Swift 代码优化项目编译速度

低功耗DC-DC电源模块的精细化PCB设计

华秋电子

K8S学习指南(4)-minikube的使用

俞兆鹏

揭秘代币价值:Token Explorer 带您洞察市场,把握投资先机

Footprint Analytics

Token 代币

Flask请求与响应-视图函数处理请求数据

测试人

软件测试 测试 自动化测试 测试开发

师爷,翻译翻译什么叫AOP

不在线第一只蜗牛

Java 数据库 前端 aop

如何利用 APM 追踪完整的类函数调用

观测云

性能优化

【好文翻译】JavaScript 中的 realm 是什么?

OpenTiny社区

前端 OpenTiny

1688店铺联系方式API接口文档

tbapi

1688API接口 1688店铺联系方式接口

一文教会你!如何利用火焰图快速定位内存泄漏?b

Greptime 格睿科技

数据库 rust 内存泄漏

如何利用容器与中间件实现微服务架构下的高可用性和弹性扩展

天翼云开发者社区

架构 微服务

iPaaS架构深入探讨

RestCloud

企业集成 ipaas

面试官:SpringBoot如何实现缓存预热?

王磊

Java 面试

云行| 国云筑基 焕新启航,天翼云中国行·东莞站圆满举行!

天翼云开发者社区

云计算 数字化 云电脑

分布式系统中的分布式链路追踪与分布式调用链路

天翼云开发者社区

分布式系统 网络

与达沃斯同行 | XTransfer与达沃斯百位全球创新者“头脑风暴”

XTransfer技术

1688公司档案信息数据接口采集Python

tbapi

1688API接口 1688公司档案信息接口

Flink Kubernetes Operator 介绍

数新网络官方账号

flink

低代码为何这么“香”

华为云开发者联盟

低代码 开发 华为云 华为云开发者联盟 华为云Astro

Spring Mobile 1.0发布_Java_Bienvenido David_InfoQ精选文章