BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Spring Mobile 1.0发布

| 作者 Bienvenido David III 关注 0 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2012年7月5日. 估计阅读时间: 8 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

近日,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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT