LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

ASP技术在WAP中的应用

admin
2010年7月22日 22:55 本文热度 4978

第一节:wap的潜能

  这些日子,我们常听到wap技术,一种手机上网的技术。从技术上讲,移动电话不可能和pc来竞争,移动电话的屏幕只能容下很少的字符,它的带宽也是很受限制,而且输入也很笨拙。那我为什么还要 介绍它了,嘿嘿,这里有两个主要的我认为wap一定有成功的因素。

随处性: 

  只要你有手机,你到哪里都可以访问wap网站。

帐单机构:

  在不久的将来,我们就能通过我们的手机来支付我们的一切费用,查询很多的信息。只是我们的手机费用中又多了一项费用"wap服务费"。

  这样我们就能用手机支付我们的商品费用,信用卡都不用了,它一定能够成为新消费方式。


第二节:wap基础

  wap (wireless application protocol) v1.1是一种开放性规范,它试图规范移动电话访问信息和服务行业。这个规范是由wap forum来开发的,一个民间组织。1.2版本的wap协议将会被认为是最后的wap规范。

  关于wap最基本的概念就是重复利用internet协议,这个协议必须很清楚地在现有的技术上轻松地调用wap服务。

  wap协议利用一种很像我们电脑网络的分层结构。较低层次不太像我们常用的web应用,但是顶层还是我们的老朋友----http。数据一样是从服务器上发出,从服务器上接收,信息能够储存在服务器上,调用也可能用cgi,也可以用其它的方法,比如asp.也就是说只要你会asp,那么你就可以在轻松地写出你的第一个wap应用程序了。

  当然,就手机的带宽和用户能力方面来看,手机需要不同(更严格)的设备,所以在目前的条件下html就不能适应wap所能提供的带宽。

  wap forum 的定位是wml (wireless mark-up language),一种xml格式的语言。wml是精简的html。

  wap forum同时也指定了wmlscript,很像javascript,只是用于手机而已,它能够处理客户端的程序。
第三节:wml

  尽管我已经讲解了手机与服务器的通讯,但是真正的客户端不是手机。一个软件(wap gateway)实际上允当了这个角色。它将手机的请求转换为http请求,同时也将服务器的回应返回给手机,wml文件此时就被wap gateway编译成二进制文件。尽管有些wap geteway能够将html直接转换为wml,但是也不要指望它们能任意地将html转换为我们在手机上能看懂的东东。

  当然,仿真器就不需要wap gateway来工作了,它会直接从服务器下载wml文件(或者直接在本地机上打开wml),同时将它显示在手机的屏幕上。


[align=center][/align]




  wap 仿真器

  为了使用wap服务,像吾等穷人买不起手机,就需要一个wap 仿真器。你可以去nokia website下载一个 nokia toolkit 1.2,同时你也得装上java virtual machine 1.2.2,可以免费从sun公司下载,这里是个例子。


[align=center][/align]


[align=center]wml 结构

  一个wml文档是由板块组成的,一个板块包含有许多的卡片。在实际中,你可以把一个板块看成一个由许多有名字的标签组成的html。

  手机下载一个完整的板块,但是在一次只能显示一个卡片。通过链接浏览不同的地方。

  我们将会看到一个简单的wml文档,你得懂点最基本的xml。

< ?xml version="1.0"? >

< !doctype wml public "-//wapforum//dtd wml 1.1//en" "http://wapforum.org/dtd/wml_1.1.xml" >

< wml >

< !-- root element -- >

< card id="card1" title="example 1" >

< p > < !-- 卡片只能支持p和do块 -- >

< do type="accept" label="go to card 2" >

< go href="#card2"/ >

< /do >

this is the first card.

< /p >

< /card >

< card id="card2" title="example 1" >

< p >

this is the second card.

< /p >

< /card >

< /wml >

  一旦手机接收了这个块,它就会显示第一个卡片,当你按下左边的软键时,就会看到第二个卡片。[/align]


[align=center] [/align]


[align=center][/align]


[align=center][/align]



wml基本的语言

"p" element

作用与html一样,只是如果你想显示文字这个就是必须的。

"do" element

  实际上每个wap应用必须支持导航条。do标签最主要的type属性的值就是accept,这个意味着当你按下软键一个新的选项会被加到列表中来。label属性指定显示的文字。另外是一些选项:

go - 导航到另外一个卡片或板块中去。他需要href 属性。

prev - 导航到上一个卡片中去

refresh - 刷新显示。

noop - 无

anchor

  作用和html中的一样的。在wml中anchor链接的作用和do差不多,唯一的不同就是anchor不以选项的形式显示。

< anchor >

go to card 2

< go href="#card2"/ >

< /anchor >

变量

  wml结合变量的办法有一点不同于html和javascript。wml的变量不仅可以被wmlscript来调用,还可以通过card直接用于wml文档。换句话说就是变量不仅可以由用户直接输入,同时也可以由setvar元素来设置。当然变量能够被脚本来操作,但这个不是必须的!这个观点必须被更进一步的强调和阐明。例如,你可能需要一个card来获得用户的名字,下一个card就显示"hello,飞刀",我们就可以这样"hello,$(firstname)",有点像php,是不是,这个在传统的html中是不可能办到的!

  既然变量的值能够在各个card之间保存,那么它们就经常被用于保存状态信息,支持一些复杂的交互式wap服务。这种方法的一个问题就是当整个deck不得不重新引用时,这些状态可能与用户的浏览不能保持同步。所以,一些事件和属性就被用来捕获这些事件(onenterofrward 和 onenterbackward).刷新则根据一些变量的值被用做更新card.
用户输入

 当然,为了使你的页面变得更加的强大,变量就需要储存(接收)用户的标准输入。这一切通过一些类似于html的元素来完成.

  input - 很像html,用户通过手机的键盘来输入。你能够想像,这种输入就不像我们使用pc上的键盘一样实用,所以我们应当尽量简化这种输入方式,有可能尽量使用select元素来供用户选择。name属性是这个变量的名字,缺省值和大小的属性显然也是必须的。format为输入入口指定了一个输入面具。其它的请查看其它资料,在这我就不一一讲述了!

select/option - 用户选项的列表。同样也很像html:

< select name='movie' >

< option value='1' >eyes wide shut< /option >

< option value='2' >notting hill< /option >

:

< option value='13' >buena vista social club< /option >

< /select >

multiple=true属性告诉用户代理(浏览器)多项选择是被允许的. onpick事件发生于一个选项被选择/被取消时.

postfield - 很像html中的hidden属性,它将不显示在屏幕中。它能同时将name与value传送给服务器.

fieldset - 包含一大堆的信息强迫手机在一个屏幕中显示,当然这得看手机的能力了

其它的元素

  img元素也同样被支持,但是你得使用一种特殊的图片格式,名叫wbmp.因为wap手机拥有有限的内存和储存空间。这种新的格式能够让wap设备快速的理解和生成图片。wireless bitmaps的生成,可以通过下载一个photoshop和paint shop pro的插件就可以搞定了。最后大家要记住在你的服务器上设置正确的mime类型,下面我列出了所有与wap有关的mime:

wml text/vnd.wap.wml

wmlc application/vnd.wap.wmlc

wmlsc application/vnd.wap.wmlscriptc

wmlscript text/vnd.wap.wmlscript

ws text/vnd.wap.wmlscript

wsc application/vnd.wap.wmlscriptc

wmls text/vnd.wap.wmlscript

wbmp image/vnd.wap.wbmp

  一些传统的强调元素也被支持,比如:em,i,b,small,strong等等,用法也和html一样。br也同样被支持,不过写法有点不同,毕竟是xml嘛,要写成这样


  最后我们来看看time对象和ontimer事件,time对象保存着至card被调用至今的时间,如果我们定了ontimer事件,那么ontimer事件就会被激发.

  还有很多我也懒得写了,希望对你们建设wml网页没有什么影响.

wap 的开发问题

  很不幸的是,事情并不是我们想像的那么简单,不同的wap手机总是有一些小的不同的地方,就像m$的javascript与ns的不同一样。例如,nokia 7710这样第一部在挪威出售的wap手机,就不能正确的支持post方法。

  另一个限制就是deck的大小的问题。有些手机(nokia 7110)就是不支持超过1.4k的wml文档,wap网关能够将你的wml文档压缩成更小的二进制格式,但是你也不要希望奇迹出现。这时不仅是nokia 7110支持的东东不能显示,一些强调标帜也被忽略了,另外fieldset标帜也很轻松地被它忽略了,是不是很烦!?嘿嘿,当你在仿真器上做出很cool的页面,然后再到手机上一看,嘿嘿,砸了手机是你的第一选择.

  虽然nokia toolkit 1.2仿真器上支持cookies,但是第一批wap手机就是不支持,这就意味着你将和你的asp中的session,说再见,至少也是很长的一段时间

  下一节,我们将真正做一个wml与asp相结合的网站.
第四节:另一种预订你电影票的方法

  在上一节中,我讲解了最基本的wap和wml的概念,这一节我们就来看看asp和wap是如何结合的.

  现在在奥斯陆,电影院提供了一种基于电话系统的来销售门票,这个系统是很复杂的,还必须给用户一些说明才能指导用户买票,而且用户还必须在报纸上找到某种电影的代码,这个很烦,我们来介绍另一种方法。

  这里这将给你展示一个简单的让手机用户订票的wap应用:一个肯定让人叫好的服务。用户不必记住那些烦人的代码,他们能够直接从菜单中选取电影和电影院,并且用户也不需要认证。在这个例子中用户被要求在电影开始前40分钟交费,但是在真正的生活中,用户同样可以通过手机来结帐.

  此应用程序想像的条件是一个电影能够在同一时间在多个电影院上映,一个电影院不同的时间上演不同的电影。

  这里我没有过多的考虑错误处理的问题,因为这不是本章节的重点,你喜欢你可以自己加上.

  为了简单,我使用了access 97来做为数据库,当然真正的系统不会用它了,其它的数据库如sql server,也不必改动多少代码.

数据库图表


[align=center][/align]




数据库图表

.movie 和theater表是显然需要的。show表用于追踪现在还有多少空位可以出售。

怎样调试这个程序

  为了访问这个wap服务,你需要一个wap仿真器,这个程序主要是在nokia toolkit 1.2上调试,详细情况请查看上一章节。

选择电影

在list表中选择一个电影:


[align=center][/align]


[align=left]这里是代码:

< !--#include file="conn.asp" -- >< % 'send the right mime type

response.contenttype = "text/vnd.wap.wml"

  第一件事就是声明wml,仿真器如何不在正确的地方声明xml,它是不会接受wml的尽管nokia 7110可以忽略这一点,但是不能保证其它的手机也行,所以你不得不做这事。同样你也得设置好mime类型。

< ?xml version="1.0"? >

< !doctype wml public "-//wapforum//dtd wml 1.1//en" "http://wapforum.org/dtd/wml_1.1.xml" >

< wml >

  在进入下一个card以前会有一个闪烁的屏幕来显示一个图片wbmp一种新的格式。这个事件是由timer属性决定的,这里我们设置的时间为5秒.ontimer事件引发后将带你去另一个card.(wmbp的photoshop插件可以从网上免费下载).

< card id="splash" ontimer="#card1" title="welcome to" > < timer value="50"/ >

< p align="center" >

< br / >

< img src="pix/logo.wbmp" alt="wap movies"/ >

< /p >

< /card >

< card id="card1" title="choose a film" >

< %

sqlquery = "select [movie_id], [title] from movie"

set rsmovies = conn.execute(sqlquery)

:

% >

< p >

< select name='movie' >

< %

do while not rsmovies.eof

response.write("< option value='" & rsmovies("movie_id") & "' >" & rsmovies("title") & "< /option >" & vbcrlf)

rsmovies.movenext

loop % >

< /select >
这一部分是本文的焦点。从数据库中读出需要的数据显示出来,作为一个asp程序员,这个没有什么特别的,但是就是这个简单的程序现在被用于一种全新的服务器就显得不一样了。这也使得我更加认为在基于wml的商业站的网络编程asp更胜于java servlet.

< small > < anchor title="next!" >next

< go href="step2.asp" method="get" >

< postfield name="movie" value="$(movie)" / >

< /go >

< /anchor >

< /small >

< /p >


  表单的提交也可以通过软开关函数(do 和 anchor)来完成。在这里,我是通过简单的内嵌链接来完成的,因为我觉得这样能够使用户感觉直观和友好。postfields大至和html中的hidden差不多,但是wml的变量不像html中的那样需要在javascript中传送,它可以直接写在wml中,这一点上一节已经讲解了.在这里的传递的方法是get,post方法在wap的规范也是被支持的,仿真器也能识别它,但是很不幸,在nokia 7110中,这个post不被支持,所以你没得选择.[/align]


该文章在 2010/7/22 22:55:28 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved