WAP中的ASP技術(三)
作者:Eve Cole
更新時間:2009-05-30 19:54:45
在上一節中,我講解了最基本的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不被支持,所以你沒得選擇.