精通Grails: Grails与移动Web

目前,几乎所有的网站都宣称 “ 使用 [Browser X] 提供最佳视图”。现代的 Ajax 库, 比如 Prototype、Dojo 和 YUI,有效地缩小了 Firefox、Internet Explorer 和 Safari 之间的差距。 但是使用 Nokia、Motorola 或者 Apple 手机的人可能不会喜欢浏览器的独立性。即使是最新的呼吁 “支持完整 HTML ” 的移动浏览器也可以从简单更改网络内容中获益。本文将向您展示如何 优化 Grails 应用程序,使其适用于移动浏览器。

如果您还在疑虑为什么非要使网站便于移动浏览的话,看一看 移动 Web 的使用率正在增长 边栏里面 的数字就会明白了。这份全球的统计数字确实让人过目难忘,但热衷移动 Web 源于我个人的兴趣。我在 2007 年春天买了一个 iPhone,那时它刚刚上市。从那以后,我就一直在寻找可以用它来浏览的网站。当 然,我可以用它访问任何的网站(只要不是基于 Flash 或者 Java applet 的网站,因为它不支 持)。问题是,适合在分辨率为 800x600 (或更高)的显示器上显示的内容,在 3.5 英寸的屏幕上显示 效果就没有那么好了。

我经常访问的那些带有 UI 的网站,因为它们符合我的手机的特定限制。我的手机会用 m 代替普通站 点中传统的 URL www,这就是一个很好的起点。http://m.cnn.com、http://m.yahoo.com 和 http://m.google.com 这样的页面就能在我的手机上显示。有些网站,比如 http://www.twitter.com, 则会做出相应的调整,以输出合适的内容:在电脑上浏览,我可以获得全部功能;而在手机上浏览时,则 删剪了一些内容,使它刚好适合我的屏幕。我将向您展示如何实现不改变 URL,但提供最佳 UI。

针对移动 Web 开发人员的技术

作为一个 Java 开发人员,我已经被 “只写一次,到处 运行(Write Once,Run Anywhere)” 的承诺给宠坏了。我甚至从来没有考虑过优化 Java 应用程 序使其适合某一特定的操作系统或硬件型号。但是如果是要开发移动 Web 的话,就应该熟悉三种支持不 同型号移动设备的主要技术:

无线标记语言(Wireless Markup Language 1.x,WML 1.x)

WML 2.x 或 Mobile Profile (XHTML-MP)

针对 iPhone 的 HTML 标记

正如我展示的一样,您可以将 WML 和 XHTML-MP 标记与用 Grails 构建的 Groovy Server Pages(GSPs)结合起来,以生成便于移动的页面。此外,我还 会向您展示如何修改 Grails 生成的 HTML,使页面在 iPhone 上显示得更好。

结合使用 WML 1.x 和 Grails

WML 是一种类似于 HTML 的标记语言,但它并不是真正的 HTML(WML 1.0 于 1998 年 标准化。WML 1.3 为最新版本)。WML 并无法在 Web 浏览器中查看(至少不借助于仿真器是不行的), 同样您也无法在 WML 浏览器中查看 HTML。手机供应商通常都会提供在后台实现 HTML 与 WML 之间相互 转换的网关。

WML 通过无线访问协议(Wireless Access Protocol,WAP)传输,这和 HTML 通过 HTTP 传输很相似。WAP 和 WML 在临时对话中通常可以相互转换:手机说明书总是会夸耀该手机带有 WAP 浏览器,或者支持 WML 1.x(参阅 参考资料 获得 WML 和 WAP 规范的官方链接)。

如果您针对 的是 Research in Motion 的 BlackBerry 用户的话,就得提高关于 WML 的知识了。(BlackBerry 大约 占了智能手机市场的 40%,iPhones 和 Windows Mobile 居于第二和第三位)。虽然很多技术过硬 的用户也可以下载真正的 Web 浏览器,比如 Opera Mini(参见 参考资料),但是 BlackBerry 智能手 机还是配备了 WAP 浏览器。

继续设计旅行计划

如果您一直都在关注 精通 Grails 系列文章的话,那么您可以修改已经熟悉的旅行计划应用程序,使 它便于在手机上浏览。在旅行计划应用程序的 web-app 目录中创建一个文件,命名为 testwml.gsp,并 输入清单 1 中的静态 WML:

清单 1. 静态 WML

<% response.setContentType("text/vnd.wap.wml") %>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN"
   "http://www.phone.com/dtd/wml11.dtd" >

<wml>
  <card id="f1" title="Flight 1">
   <p mode="wrap">From: DEN</p>
   <p mode="wrap">To: ORD</p>
   <p mode="wrap">UAL 1234</p>
   <p mode="wrap">Jun 30, 10:30am</p>
   <p>
    <anchor>Next<go href="#f2"/></anchor>
   </p>
  </card>

  <card id="f2" title="Flight 2">
   <p mode="wrap">From: ORD</p>
   <p mode="wrap">To: DEN</p>
   <p mode="wrap">UAL 9876</p>
   <p mode="wrap">Jul 02, 1:15pm</p>
   <p>
    <anchor>Previous<go href="#f1"/></anchor>
   </p>
  </card>
</wml>

时间: 2024-12-10 06:46:38

精通Grails: Grails与移动Web的相关文章

使用Grails与jQuery创建Web Calendar

本文所面向的读者 本文读者应该需要具有一定的 Web开发经验,并对于 css. Ajax.Groovy 等技术,以及 Grails.jQuery 相关框架有一定的了解. Grails,jQuery,jQuery Plugin 介绍 Grails 是一套用于快速 Web 应用开发的开 源框架,它基于 Groovy 编程语言,并构建于 Spring.Hibernate 和其它标准 Java 框架之 上,从而为大家带来一套能实现超高生产力的一站式框架. jQuery 是一个 JavaScript 库,

使用Grails构建富Internet应用程序,第1部分:使用Grails和Flex构建Web应用程序

简介:富 Internet 应用程序(Rich Internet Applications,RIA)通过浏览器保证桌面应用程序 的动态性和功能.RIA 的主要特征之一就是将表示层移动到客户机,并使用服务器上健壮的 RESTful 服 务层支持它.这种想法借助 SOUI(Service Oriented User Interface)和 SOFEA(Service Oriented Front End Architecture)之类的热门词汇得到传播. 关于本系列 这个系列探索一些应 用程序架构,

精通Grails: Grails与遗留数据库

Grails 对象关系映射(Grails Object Relational Mapping,GORM)API 是 Grails Web 框架的核心 部分之一."精通 Grails:GORM - 有趣的名称,严肃的技术" 向您介绍了 GORM 的基础知识,包括简 单的一对多关系.之后的 "使用 Ajax 实现多对多关系" 教您使用 GORM 建模越来越复杂的类关系.现 在您将看到 GORM 的 "ORM" 如何能够灵活处理遗留数据库中不符合 Gr

精通Grails: Grails服务和Google地图

自本系列的 第一篇文章 开始,我就一直在构建一个 trip-planner 应用程序.目前基本的模型-视图 -控制器(Model-View-Controller,MVC)框架已经准备就绪,我将加入一些外部技术,具体来讲,我将 加入地图功能.虽然我可以表示 "我的旅程是从丹佛到罗利,途经圣何塞和西雅图",但地图将能更好 地描述旅途路线.您可能知道西雅图和罗利是在美国的两端,但地图能够帮助您显示出两个城市之间的距 离. 这个应用程序有什么用?本文的末尾为您提供一个大体的介绍.请访问 htt

精通Grails: Grails 事件模型

对于事件驱动的反应性开发,构建 Web 站点是一门学问.您的应用程序是不是很空闲,焦虑地等待用 户发送请求,然后它传回响应,再返回休眠状态,直到下次调用.除了传统的 Web 生命周期的 HTTP 请 求和响应,Grails 还提供了大量自定义接触点,您可以在此进入事件模型并提供自己的行为. 在本文中,您将发现构建过程中会抛出很多事件.需要自定义地启动和关闭应用程序.最后,探讨 Grails 域类的生命周期事件. 构建事件 开发 Grails 的第一步是输入 grails create-app.最

Docker从入门到精通系列(1)---第一个web应用

本文为minimicall原创文章,转载需注明出处:http://blog.csdn.net/minimicall 在继<阿里云部署Docker>之后,我决定系统的出一系列<Docker从入门到精通>的深度记录文章,这源于有一天图灵出版社的一个编辑联系我,问我有没有兴趣写Docker方面的书籍进行出版. 本文的目标是建立一个Docker web app.这样,你就可以直观的感受,docker是如何部署一个web应用. 首先,我们建立一个空目录来存放我们需要的文件. 我们建立的是一个

精通Grails系列

精通Grails: 构建您的第一个Grails应用程序 精通Grails: 身份验证和授权 精通Grails: 使用Ajax实现多对多关系 精通Grails: 文件上传和Atom联合 精通Grails: 用Groovy服务器页面(GSP)改变视图 精通Grails: 用JSON和Ajax实现异步Grails 精通Grails: 用定制URI和codec优化Grails中的URI 精通Grails: 改变Grails应用程序的外观 精通Grails: 在企业中使用Grails 精通Grails:

精通Grails: RESTful Grails

本月,我将向您呈现如何让您的 Grails 应用程序成为原始数据 - 具体指 XML - 的源,从而让其 他的 Web 应用程序也能够使用它.我通常把这种情况表述为:为您的 Grails 应用程序建立 Web 服务, 但最近这个说法被赋予了新的含义.很多人把 Web 服务与 SOAP 及成熟的面向服务架构(service- oriented architecture,SOA)联系到一起.如果选择这种方法的话,Grails 拥有两个插件可以用来将 SOAP 接口公开给应用程序.但我将向您呈现的内容

使用Grails构建富Internet应用程序,第2部分

相关文章: 使用Grails构建富Internet应用程序,第1部分:使用Grails和Flex构建Web应用程序 Grails和Google Web Toolkit 简介:在这个共 2 部分的系列的第 2 部分中,将基于您在 第 1 部分 中用 Grails 创建的 Web 服 务创建新的服务.您将创建一个新的搜索页面,但这一次使用 Google Web Toolkit (GWT) 来创建这个 应用程序.此外,您还将使用 Ext GWT 库中的一些更丰富的 UI 小部件. 关于本系列 这个系列