eNet硅谷动力的系列教程,被分裂传播很久,今天整理一下放在这里。

第一节: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),同时将它显示
在手机的屏幕上。图一WAP 结构

  WAP 仿真器

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

  WML 结构

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

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

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

<?xml version="1.0"?>

<!DOCTYPE WML PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.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>

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

第四节:另一种预订你电影票的方法

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

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

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

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

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

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

数据库图表

数据库图表

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

怎样调试这个程序

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

选择电影

在list表中选择一个电影:

这里是代码:

< !--#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://www.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不被支持,所以你没得选择.

  选择电影院和上映时间

  这部分代码让用户来选择看什么时间的电影,所有的记录根据前一页所选的电影来决定。在这里来选择电影院和上映时间.

  movie_id = Request(\"movie\")

  sqlQuery = \"SELECT title FROM movie WHERE Movie_id = \" & movie_id

  set rsMovie = conn.Execute(sqlQuery)

  movie_title = rsMovie(\"title\")

  :

  sqlQuery = \"SELECT [name], [time], [show_id] FROM Show, Theater \" &_

  \"WHERE show.movie_id = \" & movie_id &_

  \" AND theater.theater_id = show.theater_id\"

  set rsShows = conn.Execute(SQLquery)

  如果你仔细研究了这个代码,你就会想用Session来保存电影信息,再在这页进行查询更简单。同样很不幸,Session是需要cookies的支持,虽说在WAP规范中也是被支持的,但是在Nokia 7110中也是不被支持,这就是说现在我们还不能把session用在WAP服务中。

  下面有一些有趣的事情:

  < select name='show' >

  < %

  Do while not rsShows.eof

  response.write(\"< option value='\" & rsShows(\"show_id\") & \"' >\" & Left(rsShows(\"name\"),cutter) & \" (\" & rsShows(\"time\") & \")\" & \"< /option >\" &vbcrlf)

  rsShows.MoveNext

  loop % >

  < /select >

  如果你对cutter变量感到疑惑,那么就有一些事让你哭笑不得

  Dim cutter

  if InStr(Request.ServerVariables(\"HTTP_USER_AGENT\"), \"Nokia7110\") then

  cutter = 12

  else

  cutter = 7

  end if

  这段代码根据不同的设备来显示选项。我们有充足的理由的这样做,Nokia Toolit 1.2仿真器喜欢把砍掉我的的选项到只有几个字符,而我们要显示电影名字和上映时间,所以我们就不得不减少电影名字的字符。在真的手机中不会出现这种问题,所以我们就必须先判断设备的类型.

  一旦我有机会(飞刀我很穷,没有钱,这是仅仅是遥远的梦想.......)在真的Nokia 7110上测试我的代码,我们会立即感到我们有比我们想像更大的屏幕。实际上,有些电影院的名字很古怪,而且这些长名字会占用很大屏幕空间,我们没有必要浪费这些显示空间,尽量把这些名字简化。

  票

  下一步就是让用户选择需要的票数.这部分的代码很像其它的部分。我将从数据库中查询相同的数据,因为Session不能在真正的WAP手机中使用,所以我必须对有些内容进行确认,看看是否还有座位出售.

  SQLquery = \"SELECT * FROM show WHERE Show_id = \" & show_id

  set rsShow = conn.Execute(SQLquery)

  :

  seats = rsShow(\"free_seats\")

  :

  if seats = 0 then

  Response.write(\"Sorry, no more seats\")

  rsShow.close

  set rsShow = nothing

  Response.write(\"< /p >< /card >< /wml >\")

  Response.end

  else

  if seats > 6 then 'book up to 6 tickets or max available

  max_seats=6

  else

  max_seats = seats

  end if

  end if

  % >

  < %=movie_title% > at < % =theater_name% >

  < select name='ticket' >

  < %

  dim i

  i = 1

  Do while i < = max_seats

  response.write(\"< option value='\" & i & \"' >\" & i & \" ticket(s)\" & \"< /option >\" &vbcrlf)

  i = i + 1

  loop % >

  < /select >

  储存票数

  现在我们已经有了所有需要的数据了,我们得把它们保存起来:

  tickets = Request(\"ticket\")

  :

  free_seats = rsShow(\"free_seats\")

  :

  free_seats = free_seats - tickets

  :

  SQLUpdate = \"UPDATE Show \" &_

  \"SET Show.free_seats=\" & free_seats & \" \" &_

  \" WHERE Show_ID=\" & show_id

  conn.Execute(SQLupdate)

  SQLquery = \"SELECT max([Booking_ID]) as bookingnumber FROM booking\"

  Set rsBooking = conn.execute(SQLquery)

  maxbookid = rsBooking(\"bookingnumber\") + 1

  SQLinsert = \"INSERT INTO Booking ( show_id, booked_seats ) \" & _

  \"VALUES ('\" & show_id & \"', '\" & tickets & \"')\"

  conn.Execute(SQLinsert) % >

  You have booked < %=tickets% > ticket(s) for < %=movie_title% >< br / >

  The show will take place at < %=theater_name% > (< %=time% >)

  < br / >

  Your reference number is < %=maxbookid% >

  下面是显示:

  Figure 4:完成交易.

  交易已经完成了,电影院可以坐着电影院门口收钱了.

  结论

  WAP现在才刚刚走出它的第一步,然而它是最近几年内最有革命性的IT发展之一。在这篇文章中我介绍了怎样用asp写WAP应用程序,并对你们提出了一些警告,希望对你们以后的发展有用。多媒体技术依然不能太多的用于WAP,但是它的可移动性却是重要的,也为商家提供了不少的商机。

使用ASP技术进行WAP网站建设|系列教程全集相关推荐

  1. EagleSite网站建设系列-(PC+WAP)蛋糕面包食品类网站模板 美食点心食品糕点类网站

    EagleSite网站建设系列-(PC+WAP)蛋糕面包食品类网站模板 美食点心食品糕点类网站 EagleSite网站建设系列-(PC+WAP)蛋糕面包食品类网站模板 美食点心食品糕点类网站 Eagl ...

  2. asp毕业设计——基于asp+sqlserver的个人网站建设设计与实现(毕业论文+程序源码)——个人网站建设

    基于asp+sqlserver的个人网站建设设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的个人网站建设设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  3. 手机wap网站建设的方法和技巧

    随着互联网技术的不断进步,越来越多的运营商对于手机wap网站的建设有了更多的投入,手机wap网站的建设和开发要根据网站的特点和经营范围来进行设计和建设,这样才可以提升手机wap网站建设的效果.现在智能 ...

  4. ASP.NET Core Web Razor Pages系列教程六:添加搜索功能

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  5. asp.NET自定义服务器控件内部细节系列教程四

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  6. ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互 entity-framework(MySQL/MariaDB 版)

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  7. ASP.NET Core Web Razor Pages系列教程八: 添加验证

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  8. ASP.NET Core Web Razor Pages系列教程七: 添加新的字段

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  9. ASP .NET Core Web Razor Pages系列教程五:更新Razor Pages页面

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

最新文章

  1. 用JavaScript实现在网页中显示时间表
  2. 夏瑞、陈程杰报告—科研神器TBtools 从“结识”到“结伴”(下午3点腾讯会议)...
  3. java default locale_Java JSON.defaultLocale方法代码示例
  4. 说了低调...这下百度知道了...
  5. Pytorch搭建yolo3目标检测平台
  6. mysql之explain详解(分析索引的最佳使用)
  7. [Sturts2]继承ActionSupport类
  8. win11 edge怎么卸载?win11 edge浏览器彻底卸载的方法教程
  9. 中兴捧月——婚姻匹配问题
  10. i7 1165g7和i7 10510u哪个好
  11. SQL代码建表时引用外键,有红线提示引用了无效的表
  12. 开水果店如何进水果,开水果店进的应季水果有哪些
  13. Altium Designer新手教程
  14. Python学习week4-python元组与字符串
  15. php 时间转时辰,Powershell小技巧之获取当前的时间并转换为时辰
  16. 推荐一些国内的jQuery CDN免费服务[转]
  17. 菜鸟窝Kotlin+Jetpack实战学习笔记
  18. 杭州的红绿灯竟然是位“诗人”在管
  19. f1c100s spi flash分区
  20. 逻辑漏洞连环击 攻击者盯上了 Eleven Finance 这块羊毛地

热门文章

  1. 软件测试培训分享:国内好用的5款软件测试管理工具
  2. 平均负载与 CPU 使用率
  3. MyEclipse 7.1官网下载
  4. Increase and Decrease
  5. h1z1加载服务器锁定状态,h1z1进不去游戏锁定状态出错 | 手游网游页游攻略大全...
  6. 韩漫ODDZ CITY上线一周获超高人气
  7. 2021.12.11LeetCode每日一题——在线选举
  8. 我要3万取款机怎么取_银行自动取款机一次可以取3万么
  9. Excel表格中如何快速生成下拉菜单
  10. 写一个网页,支持10国语言便捷切换