




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于无线标记语言(WML)的学习笔记1、 简介 WML(无线标记语言,Wireless Markup Language)是一种脚本语言, 它比HTML 编写的内容要消耗网络浏览器更少的内存和CPU时间, 使得WML对广域网和移动设备来说更加友好。整合的移动设备(灵通电话, smartphone), 如 Handspring Treo 600, Palm Tungsten W 或者象 Motorola MPX 200 这样的基于灵通电话的设备, 它们相对于传统PDA的好处常常来自于用户的偏好。2、 特点2.1、是一种从 HTML 继承而来的标记语言,但是 WML 基于 XML,因此它较 更严格。2.2、WML 被用来创建可显示在 WAP浏览器中的页面。用WML编写的页面被称为 DECKS。DECKS 是作为一套 CARDS 被构造的。2.3、这种描述语言同我们常听说的HTML语言同出一家,都属于XML语言这一大家族。WML的语法跟XML一样,WML是XML的子集。WML文件通常使用XML解释器起来解释。2.4、HTML语言写出的内容,我们可以在我们的PC机上用IE或是Netscape等浏览器进行阅读,而WML语言写出的文件则是专门用来在手机等的一些无线终端显示屏上显示,供人们阅读的,并且同样也可以向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。 2.5、WML页面文件的后缀是 *.WML。3、 详细说明用户是更喜欢携带一件整合了移动电话和PDA功能的多功能设备, 还是一个移动电话和一个PDA? 将声音和数据功能整合进一件设备里有一些吸引人的好处, 例如可以从地址簿上给一个号码打电话, 那上面有你全部联系人的电话号码而不仅仅是你用键盘敲入的, 因为灵通电话可以和你的电脑同步。 另外, 灵通电话将成熟的操作系统, 如Palm OS, Symbian, Linux 或者 Windows, 和可上网的移动设备联系在一起, 这就提供了一种平台使得公司可以移动化企业应用, 允许区域内的用户访问最新的数据。 传统的基于专有操作系统的移动电话的屏幕常常太小而不能显示有意义的数据,同时没有无线上网功能的PDA又经常不能完全符合技术规范, 使得它们无法有效地处理移动数据。PDA简介:掌上电脑,又称为PDA,就是电脑的外围助理功能丰富,应用简便,可以满足你日常的大多数需求,比如看书,游戏,字典,学习,记事,看电影等等一应俱全。4、 WMLScriptWML 使用 WMLScript 在客户端运行简单的代码。WMLScript 是一种轻量级的 JavaScript 语言。不过,WML脚本并不嵌在 WML 页面中。WML页面仅仅含有对脚本 URL 的引用。WML 脚本在 WAP 浏览器运行之前,需要先在服务器上被编译为字节编码。建立网页制作环境WML文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。当然,由于目前的浏览器还都不能显示 WML页面,而我们又不能总在手机上进行测试(速度太慢),所以需要模拟器。现在象NOKIA、ERICSSON、MOTOROLA等手机制造商都生产了相应的产品,你只要下载就行了。当然除了模拟器以外,还需要图形制作转换器(用来制作WAP格式的图形文件)、字符转码器(汉字 UNICODE)等等。5、 WML文件结构 WML的页面通常叫做桌面(DECK),由一组互相链接的卡片(CARD)组成。当移动电话访问一个WML页面的时候,页面的所有CARD都会从WAP服务器下载到设备里。CARD之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。CARD里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。CARD之间可以互相链接。文档的实体包含在.标记中,文档里每个CARD又包含在.标记中,然后实际的文字段落则包含在.标记中。简单例子:Hello world!显示结果如下:- HELLO -Hello World!6、 WML字符集 WML是XML的子集,继承了XML的字符集设置。WML文档缺省的字符集是UTF-8。要显示中文,有两种办法。最简单的办法就是在文档头使用encoding,即把第一行改为:然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以目前第2种方法更普遍:不改变字符集设置,但是在写中文的时候采用UNICODE代表中文字符,如:代表:通讯录WML元素:标记(Tag)和属性WML的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以WML标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。与XML一样,在WML语言中,所有元素都放在符号中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:内容 例如:Hello World!或 例如:和 WML同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。由于WML是XML的一种应用,因此所有的WML标记和属性都是大小写敏感的(跟完全不同),而且所有的标记都必须正确地结束。WML要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。7、WML注释XML支持这样的注释格式:这些注释在浏览器中并不显示出来。WML不支持嵌套元素注释。链接(URL)WML外部引用方式跟HTML相同/index.wml 或/index.wml#login内部引用,如果next是当前DECK中的一个CARD时,可以用这种方式:#next提供链接功能的WML元素有2个:(参见任务)和(参见事件)。CDATAXML支持CDATA的概念,以显示不需要解释的文本。下面的例子使用CDATA元素在WML页面中显示WML命令文本。! CDATA this is data 浏览器窗口将显示如下内容:this is data有了上面的基础,相信大家已经能够做不少事情了。现在我们来深入一下,看看如何提高性能和网络传输效率。首先,需要介绍一下http 1.1(RFC2616)的基础知识。当然,如果你已经很熟悉了,可以跳过第一部分。一、HTTP 1.1的简要介绍HTTP 1.1是一个基于文本的互联网实体信息交互主流协议,这里的实体可以是WAP兼容浏览器之类的用户终端,可以是WAP网关之类的代理服务器,也可以是Java servlet之类的源服务器程序。它们之间的交互信息就是两大类:客户端对服务器端的请求(request)和服务器端对客户端的响应(response)。一次完整的交互包括一个请求和对它的响应。所有的请求和响应都采用RFC822中定义的标准互联网消息格式,框架如下:* 消息定义 * 没有或多个消息头* CRLF(空行回车) * 可选的消息本体 其中消息定义不分指定了发送消息的类型。请求和响应都可以包含多个消息头,用来进一步或者重新定义用户终端和服务器之间的交互。CRLF仅仅用来将信息定义和消息本体分开。1、请求在消息定义部分可以这样定义请求: 请求类型 URL HTTP/1.1 其中请求类型可以是下面的一种: . OPTION:返回请求者和相应者之间可以使用的通信选项,主要用来检测服务器处理能力;. GET:获得以URL标示的文件内容或者程序执行结果。服务器根据文件名后缀判断服务内容,比如该URL是静态文本还是一个程序;. HEAD:除了不返回响应的信息本体以外,得到的是跟GET一样的信息。一般用来测试链接的有效性、可达性和近期修改;. POST:把消息本体中的消息发送到一个URL或者其他类似的服务器端定义行为。通常用来提交一个HTML表单或者一些数据操作活动; . PUT:把消息本体中的消息发送到一个URL,跟POST类似,但不常用;. DELETE:删除URL指定的资源;. TRACE:调用一个远程应用层请求消息回路。发出这个消息的用户终端除了收到原来的消息内容以外,还得到消息在Internet上的传送路径。 最常用的请求类型-也是我们在处理WAP应用时最关心的-是GET和POST。假设有一个WML文档,我们用UP的浏览器去浏览的话,就会向服务器发出如下GET请求:GET /wap/index.wml HTTP/1.1 accept-charset: UTF-8 accept-language:ch accept:text/vnd.wap.wml, */*, image/bmp, text/html user-agent:UP.Browser/3.1-UPG1 UP.Link/3.2 host: 其中粗体的部分是HTTP消息头,这里我们忽略了一些与我们关系不大的消息头。accept-charset:用户终端支持的字符集accept-language:用户终端目前使用的语言 accept:用户终端可以接受的MIME文件类型 user-agent:用户终端供应商提供的终端描述信息 host:请求信息发送到的域名2、响应响应的消息定义部分一般是这样的:HTTP/1.1 状态码状态描述在RFC2616中定义了近40种不同的状态码(分成5组)。其中最常见的是3个:200 OK401 Unauthorized 404 Not Found 继续上面那个例子,如果该URL合法的话,服务器的响应会是这样的: HTTP/1.1 200 OK Server: www/5.0 Date: Fri, 26 Oct 2000 12:15:23 GMT Connection: Keep-Alive Content-Length: 1211 Content_Type: text/vnd.wap.wmlLast-Modified: Mon, 22 Oct 2000 18:19:24 GMT!其它内容 这个响应信息里包括了响应的数字代码和文本描述,然后是一组消息头。在一个换行符以后就是消息本体,在这里,消息本体就是/index.wml的源代码。Server: 发出响应的服务器 Date: 响应发出的时间Connection: 指示用户终端保持连接 Content-Length: 响应信息的长度,从DECK的第一个字符开始计算Content_Type: 响应的MIME类型 Last-Modified: 响应中DECK的最后修改时间 当用户终端接收到响应以后,会对其状态信息和消息头进行解码,然后决定对响应做出什么样的动作。如果收到OK响应,一般会把消息本体里的内容显示在屏幕上。对于桌面终端,通常是HTML,对于WAP浏览器,则是WML。 HTTP是一种很烦琐的协议。即使是简单没有任何数据的请求和响应都要产生数百字节的消息。WAP通过WAP网关来解决这个问题。WAP网关一个很重要的功能就是把所有的HTTP1.1消息转换成无线任务协议(Wireless Session Protocol, WSP)的消息格式。这种格式是压缩的二进制协议,兼容HTTP1.1。它能解析所有的请求和响应消息,并转换成最精简的BIT序列。 到这里我们已经介绍了HTTP1.1的主要内容。当然HTTP1.1还有很多复杂的内容,但是在这里并不打算多讲,如果你有兴趣,可以去相关网站查找它的资料。作者只想大家知道一点:用户终端和服务器之间还有比GET和POST请求更多的互动消息,它们一样有请求和响应消息头,并且可以包含一些信号来影响WAP应用程序的执行和性能。这正是提高WAP运行效率的秘密所在。二、缓存(Caching)根据RFC2616的定义,缓存是:程序中响应消息的本地储存区以及控制这些消息储存、重新获取和删除的子系统。缓存保存可以缓存的响应消息以便降低将来的响应时间和网络带宽消耗,同样也适用于请求消息。由于WAP信道带宽的限制,我们在编写WAP应用的时候都希望最大限度地减少消息的传送量。要做到这一点,就要尽量地使用缓存,经常地从缓存中获得以前的消息。幸运的是目前大多数WAP设备都有一定级别的缓存,在默认情况下,会尝试最大化的缓存。几乎所有指向URL的响应都会被缓存下来。当WAP用户终端缓存一个响应的时候,会保存几乎所有的信息:URL、响应文本、消息头以及其他可以验证响应的内容(参看下一节验证和历史堆栈)。每个被缓存的项目都可以根据它的URL组成部分(域名、路径、协议、参数、端口等等)唯一的识别。有两种HTTP消息头可以让你控制WML的DECK缓存,对我们最重要的是Cache-Control消息头。它能够直接通过请求/响应链来控制所有的缓存实体。所有的缓存机制都必须遵守这些消息头的定义。Cach-Control消息头通常用来屏蔽一个设备的默认缓存行为。他们在消息链中传递时必须直接穿过所有的代理服务器和网关而不被改变。* Cache-Control: no-cache。设定这个选项的URL不能被缓存,包括用户终端和所有处于内容服务器和用户终端之间的其他服务器; * Cache-Control: max-age=。定义URL保存在设备缓存中的最长时间。时间到了以后,这个实体会从缓存中清除;* Expired: 。指定URL在缓存中存放的最后日期期限。RFC1123定义了日期的格式,通常是这样的:Expires: Sun, 29 October 2000 17:30:47 GMT 在写一个WAP应用的时候,你要先假设用户终端会尽量最大化缓存以便使向内容服务器获取信息的动作减少到最少。下面做些解释: 1、永久缓存URLWAP用户终端通常会尽量长地在它的缓存中保存存取过的URL,这个尽量长在P浏览器中的定义是大约30天。不过,也许你会想把一个URL的缓存时间尽量延长,比如你公司的LOGO,这样每次打开页面的时间就会减少。用下面两种方法能够很简单地实现: * 指定一个离现在很远的过期日,比如:Expires: Tue, 01 Jan 2002 00:00:00 GMT; * 指定一个很大的缓存时间,如:Cache-Control: max-age=3153600。这个例子可以让URL缓存一年。用户终端允许的最大整数是2,147,483,647,所以你可以让一个URL保存超过68年之久。当然,到那个时候,你的手机早就那报废了。 2、指定对URL的缓存时间通常的情况是对一个URL你只需要缓存一段时间。比如股票报价系统,网页可能需要5分钟更新一次,那么你只要在DECK的HEAD部分指定Cache-Control: max-age=300就行了。 如果用户在5分钟以内再次检索该页面,看到的还是缓存里的网页。如果在5分钟以后,就会到服务器上获取最新的数据。 另外一种控制缓存时间的方法是使用前面提到过的Expires,不过这种方法只能告诉用户终端:只要过了指定时间,无论什么时候访问页面都要刷新。如果你下次要控制时间,只能改变Expires里的时间值。 3、禁止对URL的缓存对于快速变化的内容,一般都会希望每次都得到最新的数据。所以这个时候要完全禁止对相关网页的缓存。方法有三种: * 设定Cache-Control: no-cache; * 设定最大缓存时间为0,Cache-Control: max-age=0; * 设定缓存到期日为一个早就过去的日期,Expires: Mon, 1 Jan 1990 00:00:00 GMT。 实际上,后两种不是最好的选择。首先这样会多占用终端的处理时间,因为当碰到这个DECK时,终端需要计算一下过期时间。其次,这样会多占用一些字节,而且在表达上也不够清楚。三、验证(validation)和历史堆栈(History Stack)在HTTP1.1中对缓存进一步提出了验证的概念。验证的目的就是检验缓存项目是否在有效期内。由于历史堆栈的存在,W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业生态系统服务的可持续管理策略-洞察及研究
- 【《农业技术推广存在的问题及解决建议对策研究-以A县为例》5400字(论文)】
- 【《新时代幼儿园劳动教育的培育模式研究》9100字(论文)】
- 个人土地转让合同 9篇
- 肠癌干抑制药物研发-洞察及研究
- 热敷热休克蛋白诱导-洞察及研究
- 基因组测序与临床微生物诊断的整合研究-洞察及研究
- 白质可塑性行为调控-洞察及研究
- 管道安装中的腐蚀修复技术研究与实践-洞察及研究
- 事业单位教育培训岗位聘用合同类型及操作细则
- 中医养生保健服务(非医疗)操作规范 熏蒸
- 电子生物反馈治疗适应症
- 特斯拉MODEL Y用户手册
- 轨道几何形位参数轨距课件
- 临床麻醉学笔记
- 混凝土施工工艺质量控制与防治
- 造影剂外渗的个案护理
- 水池满水试验具体方案
- 防校园欺凌课件(幼儿园)
- 实验室应急响应培训计划
- 秋冬季节预防流感
评论
0/150
提交评论