WAP中的ASP技术(4)
发布时间:2008-05-18 13:30:00
在上一节中,我讲解了最基本的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不被支持,所以你没得选择.
猜你喜欢
- 今天看了篇关于Web Form Design的成功案例,虽然讲的事情很简单,但总结了一些方法,翻译过来做个原始积累吧,以后写东西举例子时也好
- 在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序。尽管 ORDER BY
- Oracle数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出
- 做一个总结,把自己这些年的从业经历和观感罗列一下,某些话可能触及到个人神经,但它们没有恶意。设计师喜欢把世界想象得很美好,社会很和谐,但是这
- 一、单字节SQL注入MYSQL的SQL注入已经由来已久,以下是普遍采用的注入步骤:1、在GET参数上加一个/*或者#(mysql专有的注释)
- ASP 错误代码 说明 ASP 0100 内存不足 ASP 0101 意外错误 ASP 0102 需要字符串输入 ASP 0103 需要数字
- 代码如下:<% '功能:取得文件扩展名 Function getFileExt(sFileNam
- 它在Lynx里也会运行得很好:<%@ Language=VBScript %><HTML><
- <ScriptRUNAT=SERVERLanguage=VBScript>SubApplication_OnStar
- 如何用OdbcRegTool组件来创建一个数据源?OdbcRegTool是一个免费组件,在服务器上安装后,就可以来创建一个数据源:<h
- 第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -
- 问题: 1.购物车中的数据是否应该存储在数据库中? 我特别想知道在真正的项目中,那些真正的软件工程师是如何考虑这个问题的。在Google上一
- “点睛”的广告代码,很牛B,本想从中找出在FireFox下如何实现findText及pasteHTML类似效果的,我看了大半天,楞是没有看出
- 从信息组织角度来看,段落内行之间的关系要比段落之间的关系低一个级别,所以在呈现上段落之间的“段距”应该大于段落之内的“行距”,如此才能一目了
- 代码如下:'===================================== '转换内容,防止意外 '==
- 问:怎样解决mysql连接过多的错误?答:系统不能连接数据库,关键要看两个数据:1、数据库系统允许的最大可连接数max_connection
- 有的时候取出全部数据库记录也许正好满足你的要求,不过,在大多数情况下我们通常只需得到部分记录。这样一来该如何设计查询呢?当然会更费点脑筋了,
- 只添加了一些自己想到的常用的功能,欢迎大家补充添加自己的好的思路. 通用的正则和方法可以写在RegExpObj中,
- 基本的网站页面设计元素布局比例统计,给大家做个参考,看看您的网站是否和下面的统计一致:标志图案:位置统计结果左上角84%右上角6%上方居中6
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个